¿Cómo obtener el tiempo del formato DateTime en SQL?

182

Quiero obtener solo el tiempo de la columna DateTime usando la consulta SQL con SQL Server 2005 y 2008 Salida predeterminada:

AttDate                   
==
2011-02-09 13:09:00    
2011-02-09 14:10:00    

Me gustaría esta salida:

AttDate                Time 
==
2011-02-09 13:09:00    13:09
2011-02-09 14:10:00    14:10
Plantilla12
fuente
busque el método to_char en sql. puede especificar el formato y obtener el resultado deseado
Naveen Babu
1
select convert (varchar (10), getdate (), 108)
rahularyansharma
Podría ser SELECT CONVERT(VARCHAR(8),GETDATE(),108)para el servidor SQL
V4Vendetta

Respuestas:

342

SQL Server 2008:

SELECT cast(AttDate as time) [time]
FROM yourtable

Versiones anteriores:

SELECT convert(char(5), AttDate, 108) [time]
FROM yourtable
t-clausen.dk
fuente
34

Asumiendo servidor SQL

SELECT CONVERT(VARCHAR(8),GETDATE(),108)

V4Vendetta
fuente
Funciona solo en getdate () donde, como cuando paso select convert (varchar (8), '2011-02-09 13: 09: 00', 108) está produciendo los primeros 8 caracteres a partir de la fecha. Cómo solucionar esto ?
Aparna
24

SQL Server 2008+ tiene un tipo de datos "tiempo"

SELECT 
    ..., CAST(MyDateTimeCol AS time)
FROM
   ...

Para versiones anteriores, sin conversiones varchar

SELECT 
    ..., DATEADD(dd, DATEDIFF(dd, MyDateTimeCol, 0), MyDateTimeCol)
FROM
   ...
gbn
fuente
¿por qué no utiliza este SELECT CONVERT (VARCHAR (8), GETDATE (), 108) AS HourMinuteSecond, CONVERT (VARCHAR (8), GETDATE (), 101) AS DateOnly, ¿hay algún problema de rendimiento?
rahularyansharma
2
@rahularyansharma: no uso la conversión varchar para fechas si es necesario
gbn
señor, quiero saber si hay alguna disminución en el rendimiento si usamos esto en lugar de su solución.
rahularyansharma
1
@rahularyansharma: puede probarse usted mismo en base a este stackoverflow.com/questions/133081/…
gbn
1
Para cualquiera que no siga, 0representa la fecha mínima 1900-01-01. Entonces, esto obtiene el número (negativo) de días entre el valor de la columna y 0, luego agrega esos días negativos al valor de la columna que "pone a cero" la parte de la fecha 1900-01-01y solo le queda el tiempo.
xr280xr
13

La forma más simple de obtener el tiempo desde datetime sin pila de milisegundos es:

SELECT convert(time(0),getDate())
Papá grande
fuente
10

Intenta usar esto

  • Fecha a hora

    select cast(getdate() as time(0))
  • Time to TinyTime

    select cast(orig_time as time(0))
Cantarero
fuente
5

Prueba esto:

select  convert(nvarchar,CAST(getdate()as time),100)
Balaji N
fuente
5

Prueba esto, funcionará:

CONVERT(VARCHAR(8),DATETIME,114)

Para su referencia .

usuario8498521
fuente
3

select AttDate,convert(char(5), AttDate, 108) [Time] from yourTableName

sagar Shah
fuente
3
select cast (as time(0))

Sería una buena cláusula. Por ejemplo:

(select cast(start_date as time(0))) AS 'START TIME'
Metin Özsoy
fuente
3

A menudo uso este script para obtener Time from DateTime:

SELECT CONVERT(VARCHAR(9),RIGHT(YOURCOLUMN_DATETIME,9),108) FROM YOURTABLE
ChinoNoypi
fuente
¿Por qué me pongo 9 delante del tiempo ... Resultado: 9 11:21 PM
Sayed Muhammad Idrees
2

Para obtener el tiempo de datetime, podemos usar

SELECT CONVERT(VARCHAR(20), GETDATE(), 114)
la furgoneta
fuente
2

Si quieres salir con algo de este estilo: 23 de octubre de 2013 10:30 a.m.

Utilizar este

SELECT CONVERT(NVARCHAR(30),getdate(), 100)

convert() El método toma 3 parámetros

  1. tipo de datos
  2. Columna / Valor
  3. Estilo: los estilos disponibles son de 100 a 114. Puede elegir dentro del rango de. Elija uno por uno para cambiar el formato de fecha.
Arif Ansari
fuente
2

Obtener fecha del servidor

SELECT LTRIM(RIGHT(CONVERT(VARCHAR(20), GETDATE(), 100), 7)) FROM TABLENAME WHERE ...

o

Si está almacenado en la tabla

SELECT LTRIM(RIGHT(CONVERT(VARCHAR(20), datename, 100), 7)) FROM TABLENAME WHERE ...

Resultado:

11:41 a. M.

Luis Gerardo López Salazar
fuente
1
select convert(char(5), tbl_CustomerBooking.CheckInTime, 108) AS [time]
from tbl_CustomerBooking
JIYAUL MUSTAPHA
fuente
1

en MSSQL2012 o superior

cast(dateadd(ms,datediff(ms, [StartDateTime], [StopDateTime]),0) as Time(0))

...o...

convert(time(0),dateadd(ms,datediff(ms, [StartDateTime], [StopDateTime]),0) )
aVB.NetCoder
fuente
1

SQL Server 2012:

Select TRY_CONVERT(TIME, myDateTimeColumn) from myTable;

Personalmente, prefiero TRY_CONVERT () a CONVERT (). La principal diferencia: si falla la conversión, TRY_CONVERT () devuelve NULL mientras que CONVERT () genera un error.

jinhr
fuente
-1

select substr(to_char(colUmn_name, 'DD/MM/RRRR HH:MM:SS'),11,19) from table_name;

Salida: desde

05:11:26
05:11:24
05:11:24
usuario7131338
fuente
No funciona da error'to_char' is not a recognized built-in function name.
captainsac