MySQL al lavoro con le date
Date MySQL
La parte più difficile quando si lavora con le date è assicurarsi che il formato della data che si sta tentando di inserire corrisponda al formato della colonna della data nel database.
Finché i tuoi dati contengono solo la parte della data, le tue query funzioneranno come previsto. Tuttavia, se è coinvolta una parte di tempo, diventa più complicato.
Tipi di dati della data MySQL
MySQL viene fornito con i seguenti tipi di dati per la memorizzazione di una data o di un valore di data/ora nel database:
-
DATE
- formato AAAA-MM-GG -
DATETIME
- formato: AAAA-MM-GG HH:MI:SS TIMESTAMP
- formato: AAAA-MM-GG HH:MI:SS-
YEAR
- formato AAAA o AAAA
Nota: il tipo di dati della data viene impostato per una colonna quando crei una nuova tabella nel database!
Lavorare con le date
Guarda la seguente tabella:
Tabella degli ordini
OrderId | ProductName | OrderDate |
---|---|---|
1 | Geitost | 2008-11-11 |
2 | Camembert Pierrot | 2008-11-09 |
3 | Mozzarella di Giovanni | 2008-11-11 |
4 | Mascarpone Fabioli | 2008-10-29 |
Ora vogliamo selezionare i record con un OrderDate di "2008-11-11" dalla tabella sopra.
Usiamo la seguente SELECT
affermazione:
SELECT * FROM Orders WHERE OrderDate='2008-11-11'
Il set di risultati sarà simile a questo:
OrderId | ProductName | OrderDate |
---|---|---|
1 | Geitost | 2008-11-11 |
3 | Mozzarella di Giovanni | 2008-11-11 |
Nota: due date possono essere facilmente confrontate se non è coinvolta alcuna componente temporale!
Ora, supponiamo che la tabella "Ordini" assomigli a questa (notare il componente temporale aggiunto nella colonna "Data ordine"):
OrderId | ProductName | OrderDate |
---|---|---|
1 | Geitost | 2008-11-11 13:23:44 |
2 | Camembert Pierrot | 2008-11-09 15:45:21 |
3 | Mozzarella di Giovanni | 2008-11-11 11:12:01 |
4 | Mascarpone Fabioli | 2008-10-29 14:56:59 |
Se utilizziamo la stessa SELECT
affermazione di cui sopra:
SELECT * FROM Orders WHERE OrderDate='2008-11-11'
non otterremo alcun risultato! Ciò è dovuto al fatto che la query cerca solo le date senza una porzione di tempo.
Suggerimento: per mantenere le tue query semplici e facili da gestire, non utilizzare componenti temporali nelle date, a meno che non sia necessario!