week obtener nombre new name day datepart sql sql-server sql-server-2008

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