¿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

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

34

Asumiendo servidor SQL

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


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
   ...

¿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())

10

Intenta usar esto

  • Fecha a hora

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

    select cast(orig_time as time(0))

5

Prueba esto:

select  convert(nvarchar,CAST(getdate()as time),100)


3

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


3
select cast (as time(0))

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

(select cast(start_date as time(0))) AS 'START TIME'

3

A menudo uso este script para obtener Time from DateTime:

SELECT CONVERT(VARCHAR(9),RIGHT(YOURCOLUMN_DATETIME,9),108) FROM YOURTABLE

¿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)

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.

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.


1
select convert(char(5), tbl_CustomerBooking.CheckInTime, 108) AS [time]
from tbl_CustomerBooking

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) )

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.


-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

No funciona da error'to_char' is not a recognized built-in function name.
captainsac
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.