Come sarebbe possibile estrarre la parte relativa all'ora di un campo DateTime in SQL? Per il mio progetto che ho per restituire i dati che ha un timestamp di 5:00 di un campo datetime non importa quale sia la data èTempo parte di un campo DateTime in SQL
risposta
In SQL Server se è necessario solo il hh:mi
, è possibile utilizzare:
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)
Che non viene formattato correttamente per i minuti <10 ovvero 10 : 09 risulta 10: 9 – LarryBud
@LarryBud Ho risolto il problema in una modifica - ha aggiunto la funzione RIGHT chiama. –
Ciò restituirà il tempo di sola
Per SQL Server:
SELECT convert(varchar(8), getdate(), 108)
Spiegazione:
getDate()
sta dando data e ora correnti.
108
sta formattando/fornendoci la parte richiesta in questo caso.
varchar(8)
ci fornisce il numero di caratteri da quella parte.
come:
Se hai scritto varchar(7)
lì, che vi darà 00:00:0
Se hai scritto varchar(6)
lì, che vi darà 00:00:
Se hai scritto varchar(15)
lì, sarà ancora vi darà 00:00:00
perché è dare uscita della porzione di tempo giusto. SQLFiddle Demo
Per MySQL:
SELECT DATE_FORMAT(NOW(), '%H:%i:%s')
[visita questo] (http://www.sql-server-helper.com/tips/date-formats.aspx) per ulteriore assistenza. – Sohail
Se si desidera solo l'ora della vostra datetime, quindi è possibile utilizzare DATEPART()
- SQL Server:
declare @dt datetime
set @dt = '2012-09-10 08:25:53'
select datepart(hour, @dt) -- returns 8
In SQL Server 2008+ è possibile CAST()
come il tempo:
declare @dt datetime
set @dt = '2012-09-10 08:25:53'
select CAST(@dt as time) -- returns 08:25:53
Questo è ottimo, consente calcoli di differenza di tempo facili come questo: SELECT DATEDIFF (mi, CAST (@SomeDate AS TIME), CAST (@AnotherDate AS TIME)) – Dave
"Per il mio progetto, ho per restituire i dati che hanno un timestamp di 5pm di un campo DateTime, non importa quale sia la data. "
Quindi penso che volevi dire che avevi bisogno della data, non del tempo. Si può fare qualcosa di simile per ottenere un appuntamento con 05:00 come il tempo:
SELECT CONVERT(VARCHAR(10), GetDate(), 110) + ' 05:00:00'
Prova questa in SQL Server 2008:
select *
from some_table t
where convert(time,t.some_datetime_column) = '5pm'
Se si vuole prendere un valore datetime casuale e regolarlo quindi il componente orario è 5pm, quindi in SQL Server 2008 ci sono diversi modi. Innanzitutto è necessario iniziare la giornata (ad es., 2011-09-30 00: 00: 00.000).
Una tecnica che funziona per tutte le versioni di Microsoft SQL Server e tutte le versioni di Sybase è quello di utilizzare
convert/3
per convertire il valore datetime ad un varchar che manca di una componente di tempo e poi di nuovo in un valore datetime:select convert(datetime,convert(varchar,current_timestamp,112),112)
dà Quanto sopra si avvia-of-day per il giorno corrente.
In SQL Server 2008, però, si può dire qualcosa di simile:
select start_of_day = t.some_datetime_column - convert(time, t.some_datetime_column) , from some_table t
che rischia più veloce.
Una volta avviato, arrivare alle 17 è facile. Basta aggiungere 17 ore per il vostro valore iniziale della giornata:
select five_pm = dateadd(hour,17, t.some_datetime_column
- convert(time,t.some_datetime_column)
)
from some_table t
Questo dovrebbe spogliare la parte relativa alla data:
select convert(datetime,convert(float, getdate()) - convert(int,getdate())), getdate()
e restituire un datetime con una data predefinita di 1900-01-01.
seconda espressione ROUND UP data, è necessario utilizzare 'floor (convert (float))', non 'convert (int)' 'convert (datetime, convert (float, ok_date_added) -floor (convert (float, ok_date_added))) ' – Rijen
So che questa è una vecchia questione, ma dal momento che le altre risposte tutte
- stringhe di ritorno (piuttosto che datetimes),
- contare sulla rappresentazione interna delle date (conversione di galleggiare, int, e indietro) o
- richiede SQL Server 2008 o oltre,
ho pensato di aggiungere un opzione "puro", che richiede solo operazioni datetime e lavora con SQL Server 2005 +:
SELECT DATEADD(dd, -DATEDIFF(dd, 0, mydatetime), mydatetime)
Questo calcola la differenza (in giorni interi) tra data zero (1900-01-01) e la data proposta e quindi sottrae il numero di giorni dalla data proposta, modificando così la sua componente di data a zero.
Fresco, ma con SQL Server 2008 e versioni successive è più semplice pronunciare" SELECT CAST (mydatetime AS time ") (derivato da altre risposte). –
@JeppeStigNielsen A meno che non si utilizzi DATETIMEOFFSET, CAST (ora mydatetime AS) non funzionerà. – JumpingJezza
@JumpingJezza Non sei sicuro di cosa intendi. Ho una tabella 'mytable' con una colonna' mydatetime' che ha il tipo '(datetime, not null)', e per me funziona bene: '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'
Sebbene questo codice possa rispondere alla domanda, fornendo un contesto aggiuntivo relativo a ** come ** e ** perché ** risolve il problema, migliorerebbe il valore a lungo termine della risposta. – Alexander
- 1. Confronta solo la parte del tempo in datetime - Python
- 2. Solo aggiornamento Tempo in un campo DateTime mysql
- 3. Confronto delle date in MySQL ignorando la porzione di tempo di un campo DateTime
- 4. Come estrarre solo il tempo da un campo DateTime in Oracle SQL Developer?
- 5. Come si aggiorna un campo DateTime in T-SQL?
- 6. Informix SQL: come ottenere la parte di data di un campo data/ora in una query?
- 7. come restituire la media di un campo di tempo sql
- 8. MySQL: inserire datetime in un altro campo datetime
- 9. datetime to totalminute in sql
- 10. SQL Server: aggiungere secondi a un campo datetime?
- 11. qual è il modo corretto di formattare un datetime nel campo datetime del server SQL
- 12. L'utilizzo di un parametro datetime con ADO (ODBC) perde la parte del tempo
- 13. Come convertire un Datetime .Net in un datetime T-SQL
- 14. Come convertire un datetime in stringa in T-SQL
- 15. Come posso confrontare il tempo in SQL Server?
- 16. Come impostare solo una parte di tempo di una variabile DateTime in C#
- 17. Campo DateTime in modello Django
- 18. Prendi solo la parte Data di DateTime in mssql
- 19. Imposta valore predefinito in EF datetime datetime
- 20. Query SQL Server Server - Conta campo DateTime distinto
- 21. Conversione tempo Epoch nella datetime
- 22. Gruppo DateTime da un tempo arbitrario intervallo
- 23. Confrontando parità di data e datetime in SQL Server
- 24. Rendere automatico un campo DateTime in un database?
- 25. Datetime in java
- 26. SQL Server converte stringa in datetime
- 27. Come selezionare una parte di un campo BLOB in Oracle?
- 28. Confrontare la parte temporale del tipo di dati DateTime in SQL Server 2005
- 29. Dividere un periodo di tempo in più periodi di tempo
- 30. Mysql inserisce un datetime casuale in un determinato intervallo datetime
Questa domanda è stata posta molte volte: si prega di utilizzare la ricerca. [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