¿Cómo podría extraer la parte de tiempo de un campo DateTime en SQL? Para mi proyecto tengo que devolver los datos que tiene una marca de tiempo de 17:00 de un campo DateTime no importa lo que la fecha esParte del tiempo de un campo DateTime en SQL
Respuesta
En SQL Server si necesita sólo el hh:mi
, puede utilizar:
DECLARE @datetime datetime
SELECT @datetime = GETDATE()
SELECT RIGHT('0'+CAST(DATEPART(hour, @datetime) as varchar(2)),2) + ':' +
RIGHT('0'+CAST(DATEPART(minute, @datetime)as varchar(2)),2)
Eso no formatea correctamente por minutos <10, es decir, 10 : 09 resulta 10: 9 – LarryBud
@LarryBud lo arreglé en una edición - agregué las llamadas a la función DERECHA. –
Esto devolverá el tiempo de sólo
Para SQL Server:
SELECT convert(varchar(8), getdate(), 108)
Explicación:
getDate()
indica la fecha y la hora actuales.
108
está formateando/dándonos la porción requerida, es decir, el tiempo en este caso.
varchar(8)
nos da la cantidad de caracteres de esa porción.
igual:
Si usted escribió varchar(7)
allí, se le dará 00:00:0
Si usted escribió varchar(6)
allí, se le dará 00:00:
Si usted escribió varchar(15)
allí, todavía le dará 00:00:00
porque es dar salida de solo la porción de tiempo. SQLFiddle Demo
Para MySQL:
SELECT DATE_FORMAT(NOW(), '%H:%i:%s')
[visite esto] (http://www.sql-server-helper.com/tips/date-formats.aspx) para obtener más ayuda. – Sohail
Si desea que sólo la hora de su fecha y hora, entonces se puede utilizar DATEPART()
- SQL Server:
declare @dt datetime
set @dt = '2012-09-10 08:25:53'
select datepart(hour, @dt) -- returns 8
En SQL Server 2008+ puede CAST()
como el tiempo:
declare @dt datetime
set @dt = '2012-09-10 08:25:53'
select CAST(@dt as time) -- returns 08:25:53
Esto es genial, permite cálculos de diferencia de tiempo fácil como este: SELECCIONAR DATEDIFF (mi, CAST (@SomeDate AS TIME), CAST (@AnotherDate AS TIME)) – Dave
"Para mi proyecto, no tengo para devolver datos que tienen una marca de tiempo de 5pm de un campo DateTime, sin importar la fecha ".
Así que creo que lo que usted quiso decir es que necesitaba la fecha, no el momento. Usted puede hacer algo como esto para conseguir una cita con 5:00 como el tiempo:
SELECT CONVERT(VARCHAR(10), GetDate(), 110) + ' 05:00:00'
Prueba esto en SQL Server 2008:
select *
from some_table t
where convert(time,t.some_datetime_column) = '5pm'
Si desea tomar un valor de fecha y hora al azar y ajustarlo entonces el componente de tiempo es 5pm, luego en SQL Server 2008 hay varias maneras. Primero necesita el comienzo del día (p. Ej., 2011-09-30 00: 00: 00,000).
Una técnica que funciona para todas las versiones de Microsoft SQL Server, así como todas las versiones de Sybase es utilizar
convert/3
para convertir el valor de fecha y hora a un varchar que carece de un componente de tiempo y luego de nuevo en un valor de fecha y hora:select convert(datetime,convert(varchar,current_timestamp,112),112)
en el cuadro anterior se inicia del día para el día actual.
En SQL Server 2008, sin embargo, se puede decir algo como esto:
select start_of_day = t.some_datetime_column - convert(time, t.some_datetime_column) , from some_table t
que probablemente más rápido.
Una vez que tiene el comienzo del día, llegar a las 5 pm es fácil. Sólo tiene que añadir 17 horas a su valor de inicio del día:
select five_pm = dateadd(hour,17, t.some_datetime_column
- convert(time,t.some_datetime_column)
)
from some_table t
Esto debe despojar la parte de fecha:
select convert(datetime,convert(float, getdate()) - convert(int,getdate())), getdate()
y devolver una fecha y hora con una fecha predeterminada de 1900-01-01.
segunda expresión REDONDEAR fecha, necesita usar 'piso (convertir (float))', no 'convertir (int)' 'convertir (datetime, convert (float, ok_date_added) -floor (convertir (float, ok_date_added))) ' – Rijen
Sé que esto es una cuestión de edad, pero ya que las otras respuestas todos
- cadenas de retorno (en lugar de datetimes),
- baso en la representación interna de las fechas (conversión a flote, int y espalda) o
- requiere SQL Server 2008 o más allá,
pensé que me gustaría añadir una opción de "puro", que sólo requiere operaciones de fecha y hora y trabaja con SQL Server 2005 +:
SELECT DATEADD(dd, -DATEDIFF(dd, 0, mydatetime), mydatetime)
Esto calcula la diferencia (en días enteros) entre la fecha de cero (1900-01-01) y la fecha dada y luego resta ese número de días desde la fecha dada, estableciendo así su componente de fecha a cero.
Genial, pero con SQL Server 2008 y posterior es más fácil decir' SELECT CAST (mydatetime AS time) '(deducido de otras respuestas). –
@JeppeStigNielsen A menos que esté utilizando DATETIMEOFFSET, entonces CAST (mydatetime AS time) no funcionará. – JumpingJezza
@JumpingJezza No estoy seguro de lo que quiere decir. Tengo una tabla 'mytable' con una columna' mydatetime' que tiene el tipo '(datetime, not null)', y para mí esto funciona bien: 'SELECT CAST (mydatetime AS time) AS TimePart, * FROM mytable' –
SELECT DISTINCT
CONVERT(VARCHAR(17), A.SOURCE_DEPARTURE_TIME, 108)
FROM
CONSOLIDATED_LIST AS A
WHERE
CONVERT(VARCHAR(17), A.SOURCE_DEPARTURE_TIME, 108) BETWEEN '15:00:00' AND '15:45:00'
Si bien este código puede responder a la pregunta, proporcionar contexto adicional con respecto a ** cómo ** y ** por qué ** resuelve el problema mejoraría el valor a largo plazo de la respuesta. – Alexander
- 1. Comparación de fechas en MySQL ignorando la parte del tiempo de un campo DateTime
- 2. Comparación de la parte del tiempo del campo datetime en Hibernate
- 3. T-SQL: ¿Cómo actualizar solo la fecha del campo datetime?
- 4. Agregue el valor predeterminado del campo datetime en SQL Server a una marca de tiempo
- 5. Comparación de la parte de tiempo del tipo de datos DateTime en SQL Server 2005
- 6. ¿Cómo se crea un índice en la parte de la fecha del campo DATETIME en MySql
- 7. ¿Cómo se actualiza un campo DateTime en T-SQL?
- 8. Eliminar el tiempo del servidor de DateTime sql 2005
- 9. actualización de un campo DateTime en dB de SQL Server de fecha y hora campos
- 10. Comparar DATETIME y DATE ignorando la parte de tiempo
- 11. datetime a totalminute en sql
- 12. Establezca un campo de base de datos DateTime en "Ahora"
- 13. pasar un valor NULL a DateTime campo en LINQ
- 14. Linq a sql: Ordene por datetime desc, luego ordene por el tiempo parte de los datos asc?
- 15. Consulta de SQL Server Server - Contar el campo DateTime distinto
- 16. Comparar fechas en T-SQL, ignorando la parte de tiempo
- 17. extrae la parte de fecha de DateTime en C#
- 18. Cómo resumir el campo de tiempo en SQL Server
- 19. Eliminar parte del tiempo de una marca de tiempo
- 20. Declaración SQL LIKE en un tipo DateTime
- 21. ¿Cómo selecciono parte de un campo BLOB en Oracle?
- 22. Obtener sólo la parte Fecha de DateTime en mssql
- 23. UNIX Marca de tiempo para MySQL DATETIME
- 24. Cómo seleccionar una parte de una marca de tiempo en una consulta SQL
- 25. ¿Eliminar segundos del campo de tiempo?
- 26. Establecer el valor del campo datetime para anular
- 27. Restablecer la parte de tiempo de una marca de tiempo en Java
- 28. Grupo DateTime por un tiempo arbitrario intervalo
- 29. ¿Es posible exponer un campo DateTime a través de COM?
- 30. ¿Cómo puedo comparar el tiempo en SQL Server?
Esta pregunta se ha hecho muchas veces: utilice la búsqueda. [SQL Server] (http://stackoverflow.com/questions/3201432/how-to-get-time-part-from-sql-server-2005-datetime-in-hhmm-tt-format), [MySQL] (http://stackoverflow.com/questions/12337195/how-to-part-date-and-time-from-datetime-in-mysql), [Oracle] (http://stackoverflow.com/questions/2951858/extract -time-part-from-timestamp-column-in-oracle) – Bridge