sql - obtener - Cómo emitir la fecha y hora a la hora
sql server new date (4)
Puede lograrlo con
CAST
simplemente usando el tipo de datos
TIME(0)
de la siguiente manera:
SELECT CAST(''2015-03-19 01:05:06.289'' AS TIME(0))
SALIDA:
01:05:06
Estoy
DateTime
campo
DateTime
a Time utilizando
CAST
Syntax.
select CAST([time] as time) as [CSTTime]
2015-03-19 00:00:00.000
Salida actual: Tiempo
03:05:36.0000000
Solo necesito
HH:MM:SS
y no milisegundos o 0000
Cómo filtrarlo o enviarlo al formato exacto
HH:MM:SS
.
Todas las respuestas anteriores son correctas, solo para referencia en 2012+ también puede hacer:
DECLARE @date datetime2 = SYSDATETIME()
SELECT FORMAT(@date, N''hh:mm:ss'', N''en-US'')
SELECT TIMEFROMPARTS(DATEPART(hh, @date), DATEPART(mm, @date), DATEPART(ss, @date),0,0)
FORMAT() permite elegir su delimitador y culture . NVARCHAR tipo de datos NVARCHAR .
TIMEFROMPARTS() permite elegir su precisión y es útil cuando desea redondear su marca de tiempo de cualquier manera, ya que trata todos los valores dentro como números int. TIME tipo de datos TIME .
Time
no se almacena con su
formato de visualización
en SQL Server.
Por lo tanto, desde la perspectiva del usuario, puede decir que no
tiene formato.
Por supuesto, eso no es del todo exacto ya que tiene un
formato de almacenamiento
, pero como usuario promedio realmente no puede usarlo.
Esto es cierto para todos los tipos de datos de fecha y hora:
Date
,
DateTimeOffset
,
DateTime2
,
SmallDateTime
,
DateTime
y
Time
.
Si necesita un formato, no necesita convertirlo a
time
sino a un
char
.
Use
Convert
para obtener el
char
que necesita:
SELECT CONVERT(char(10), [time], 108) as CSTTime
Aquí hay algunos datos de fondo si está interesado:
En
este artículo
publicado en 2000, el escritor explica en profundidad cómo SQL Server trata las fechas y horas.
Dudo si algo significativo cambió entre 2000 y 2015 en la forma en que SQL Server almacena los valores de
date
,
time
y
datetime
y
datetime
internamente.
Aquí están las citas relevantes, si no quieres leerlo todo:
Entonces, ¿cómo almacena SQL Server internamente las fechas? Utiliza 8 bytes para almacenar un valor de fecha y hora: los primeros 4 para la fecha y los segundos 4 para la hora. SQL Server puede interpretar ambos conjuntos de 4 bytes como enteros.
........
........
SQL Server almacena el segundo entero para la hora como el número de tics de reloj después de la medianoche. Un segundo contiene 300 ticks, por lo que un tick equivale a 3.3 milisegundos (ms).
dado que el
time
se almacena realmente como un entero de 4 bytes, realmente no tiene un formato como parte integral del tipo de datos.
También puede consultar este artículo para obtener una explicación más detallada con ejemplos de código.
SQL Server 2008:
select cast(MyDate as time) [time] from yourtable
Versiones anteriores:
select convert(char(5), MyDate , 108) [time] from yourtable
Otras opciones:
SELECT CONVERT(VARCHAR(20), GETDATE(), 114)
La forma más sencilla de obtener el tiempo desde datetime sin pila de milisegundos es:
SELECT CONVERT(time(0),GETDATE())
Hora y minuto
SELECT substring(CONVERT(VARCHAR, GETDATE(), 108),0,6) AS Time