datoer og tidspunkter er ekstremt frustrerende datatyper og ikke gør dem nemmere at arbejde med end andre sprog. Mens dato og klokkeslæt faktisk er helt forskellige datatyper, de flettes ofte sammen til en datetime-datatype. Datoer og tidspunkter alene er ret enkle, selvom de kræver en særlig formatering. Men sammenlægning af de to kan være en af de mest smertefulde opgaver, du vil stå over for i dine tidlige år. En god tommelfingerregel er kun at bruge et tidspunkt og en dato sammen, når du absolut har brug for eller bliver nødt til i fremtiden. Jeg forklarer, hvorfor datoer og tidspunkter komplicerer tingene på bare et minut. Lad os først se på, hvor let livet er, når du bare arbejder med datoer.
arbejde med datoerne
vores” brugere ” tabel:
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.
eksempel
SELECT *FROM UsersWHERE member_since < '2011-12-25'
resultat
id | brugernavn | første | sidste | Medlem siden | |
---|---|---|---|---|---|
2 | internetcreator | al | Gore | 2011-12-8 | |
3 | dontmessmed emner | George | bush | 2011-7-9 |
okay, vi sagde før 25.december 2011, hvilket betyder, at dårlig Hillary ikke er inkluderet, fordi hun er den dag. Al lavede næppe snittet, men gamle George var langt før vores afskæringsdato. Jeg formoder, at vi faktisk skal tale om, hvad der skete. Op til hvor member_since < ‘2011-12-25’, vi ved, hvad der gjorde. Vi kunne nok gætte, hvad der foregår her, men jeg slår den døde hest. Vi tjekker vores member_since-kolonne for at se, om den er mindre end, <, vores dato, som blev skrevet i enkelt citater som ‘2011-12-25’. Ofte når googling om hjælp med datoer, du ser denne syntaks benævnt ‘ÅÅÅÅ-MM-DD’, hvor Y er for året, M er for måned, og D er for dag, naturligvis. Hver gentagelse er et symbol på et tomt tegnrum for det pågældende element. Så du vil kun have 2 cifre i måneden, fordi det giver mening, og måske er du ligeglad med de første 2 tegn i året. I stedet skriver du bare, YY for at få 11. Nemt nok, på de vidunderlige DATETIMEs
ved hjælp af DATETIME i KVL
vores nye” brugere ” bord:
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 |
nu forsøger vi at få alle vores medlemmer, der er logget ind før før 1:00pm December 24, 2011.
eksempel
SELECT * FROM UsersWHERE last_login < '2011-12-24 13:00:00'
resultat
id | brugernavn | første | sidste | last_login |
---|---|---|---|---|
1 | ohbillnotagain | Hillary | Clinton | 2011-12-24 12:59:15 |
2 | internetcreator | al | Gore | 2011-12-24 11:53:25 |
dårlig George… okay, nøjagtig den samme syntaks som en sidste med undtagen vi erstattede kolonnenavnet og brugte en DATETIME-streng til at sammenligne med. Datatypen DATETIME indeholder alle de samme elementer som DATODATATYPEN plus en tidsstreng. Almindeligvis refereret som ‘ÅÅÅÅ-MM-DD HH: MM: SS’ igen, i enkelt citater og med et mellemrum, der adskiller datostrengen fra tidsstrengen, opretter vi vores datostreng til sammenligning. Hillary og Al gør begge skåret, fordi de loggede ind før ‘2011-12-24 13: 00:00 ‘ skær DATETIME af. Det er meget lettere her end det ser ud i praksis. Det er fordi vi lægger DATETIME-strengen i hånden. Du kan erstatte vores streng med:
vigtige DATOFUNKTIONER
Bemærk: DATOFUNKTIONERNE varierer meget på tværs af versionerne. Det er Myskl.
- CURDATE() – får den aktuelle dato
- CURTIME() – får den aktuelle tid
- nu() – får både dato og klokkeslæt (i DATETIME-format)
Hvis du ikke bruger Curtime, kan du overveje at skifte. Bare sjov, slags, men ingen bekymringer, en simpel forespørgsel fra Google hjælper dig med at finde de rigtige funktioner til din database.