Date e orari sono tipi di dati estremamente frustranti e SQL non li rende più facile da lavorare rispetto ad altre lingue. Mentre data e ora sono in realtà tipi di dati completamente diversi, spesso vengono uniti in un tipo di dati datetime. Le date e gli orari SQL da soli sono piuttosto semplici anche se richiedono una formattazione speciale. Tuttavia, unire i due può essere uno dei compiti più dolorosi che dovrai affrontare nei tuoi primi anni. Una buona regola empirica è quella di utilizzare solo un tempo e una data insieme quando è assolutamente necessario o sarà necessario in futuro. Spiegherò perché date e orari complicano le cose in un minuto. In primo luogo, diamo un’occhiata a come la vita facile quando si lavora semplicemente con le date.
Lavorare con le date SQL
La nostra tabella” Utenti”:
id | username | first | last | member_since |
---|---|---|---|---|
1 | ohBillNotAgain | Hillary | Clinton | 2011-12-25 |
2 | internetCreator | Al | Gore | 2011-12-8 |
3 | dontMessWithTexas | George | Bush | 2011-7-9 |
Let’s try to get all of our members before December 25, 2011.
Esempio:
SELECT *FROM UsersWHERE member_since < '2011-12-25'
Risultato
id | nome utente | nome | cognome | member_since |
---|---|---|---|---|
2 | internetCreator | Al | Gore | 2011-12-8 |
3 | dontMessWithTexas | Giorgio | Bush | 2011-7-9 |
Bene, abbiamo detto che PRIMA di dicembre 25, 2011, il che significa che la povera Hillary non è incluso perché è in quel giorno. Al ha fatto a malapena il taglio, ma il vecchio George era molto prima della nostra data di taglio. Suppongo che dovremmo davvero parlare di quello che e ‘ successo. Fino a DOVE member_since< ‘2011-12-25’, sappiamo cosa stavano facendo. Probabilmente potremmo indovinare cosa sta succedendo qui, ma batterò il cavallo morto. Controlliamo la nostra colonna member_since per vedere se è inferiore a, <, la nostra data, che è stata scritta tra virgolette come ‘2011-12-25’. Spesso quando cerchi aiuto su Google con le date, vedi questa sintassi indicata come ‘AAAA-MM-GG’, dove Y è per l’anno, M è per il mese e D è per il giorno, ovviamente. Ogni ripetizione è un simbolo di uno spazio di carattere vuoto per quell’elemento. Quindi, vuoi solo 2 cifre per mese perché ha senso, e forse non ti interessa i primi 2 caratteri dell’anno. Invece basta scrivere, YY per ottenere 11. Abbastanza facile, sul meraviglioso DATETIMEs
Usando DATETIME in SQL
La nostra nuova tabella” Utenti”:
id | username | first | last | last_login |
---|---|---|---|---|
1 | ohBillNotAgain | Hillary | Clinton | 2011-12-24 12:59:15 |
2 | internetCreator | Al | Gore | 2011-12-24 11:53:25 |
3 | dontMessWithTexas | George | Bush | 2011-12-24 16:24:17 |
Ora, cerchiamo di ottenere tutti i nostri membri che hanno effettuato l’accesso prima prima di 1:00PM 24 dicembre 2011.
Esempio:
SELECT * FROM UsersWHERE last_login < '2011-12-24 13:00:00'
Risultato
id | nome utente | nome | cognome | last_login |
---|---|---|---|---|
1 | ohBillNotAgain | Hillary | Clinton | 2011-12-24 12:59:15 |
2 | internetCreator | Al | Gore | 2011-12-24 11:53:25 |
Povero George Alright Va bene, esattamente la stessa sintassi di un’ultima con tranne che abbiamo sostituito il nome della colonna e usato una stringa DATETIME da confrontare. Il tipo di dati DATETIME contiene tutti gli stessi elementi del tipo di dati DATA più una stringa di tempo. Comunemente indicato come ‘AAAA-MM-GG HH: MM: SS’ Ancora una volta, in singole citazioni e con uno spazio che separa la stringa di data dalla stringa di tempo, creiamo la nostra stringa di DATA per il confronto. Hillary e Al sia fare il taglio perché hanno effettuato l’accesso prima del ‘2011-12-24 13:00:00 ‘ tagliare DATETIME. Qui è molto più facile di quanto sembri in pratica. Questo perché abbiamo inserito la stringa DATETIME a mano. SQL ha alcune funzioni di DATA con cui puoi giocare che puoi sostituire la nostra stringa con:
Importanti funzioni di DATA SQL
Nota: le funzioni di DATA SQL differiscono notevolmente tra le versioni SQL. Questi sono MySQL.
- CURDATE() – ottiene la data corrente
- CURTIME() – ottiene l’ora corrente
- NOW() – ottiene sia la data e l’ora (in formato DATETIME)
Se non si utilizza MySQL, prendere in considerazione il passaggio. Sto scherzando, tipo, ma non preoccuparti, una semplice query di Google ti aiuterà a trovare le giuste funzioni SQL per il tuo database SQL.