datum en DATETIME

data en tijden zijn extreem frustrerend gegevenstypen en SQL maakt ze niet gemakkelijker om mee te werken dan andere talen. Hoewel datum en tijd eigenlijk volledig verschillende gegevenstypen zijn, worden ze vaak samengevoegd in een datetime gegevenstype. SQL Data en tijden alleen zijn vrij eenvoudig, hoewel ze een speciale opmaak vereisen. Echter, het samenvoegen van de twee kan een van de meest pijnlijke taken die u in uw vroege jaren zal worden geconfronteerd. Een goede vuistregel is om alleen een tijd en datum samen te gebruiken wanneer je absoluut nodig hebt of zal moeten in de toekomst. Ik zal uitleggen waarom data en tijden de dingen compliceert in een minuut. Eerste, laten we eens kijken naar hoe gemakkelijk het leven als je gewoon werken met data.

werken met SQL-datums

onze tabel “gebruikers” :

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.

Voorbeeld

SELECT *FROM UsersWHERE member_since < '2011-12-25'

Resultaat

id gebruikersnaam eerste laatste member_since
2 internetCreator Al Gore 2011-12-8
3 dontMessWithTexas George Struik 2011-7-9

Oke, we gezegd December 25, 2011, wat betekent dat arme Hillary is niet opgenomen, omdat ze op die dag. Al haalde nauwelijks de cut, maar oude George was ver voor onze cut off date. Ik denk dat we eigenlijk moeten praten over wat er gebeurd is. Tot waar member_since < ‘2011-12-25’, we weten wat we deden. We kunnen waarschijnlijk raden wat hier aan de hand is, maar ik versla het dode paard. We controleren onze member_since kolom om te zien of deze kleiner is dan, <, onze datum, die in enkele aanhalingstekens werd geschreven als ‘2011-12-25’. Vaak wanneer u googlen voor hulp met datums, zie je deze syntaxis aangeduid als ‘YYYY-MM-DD’, waar Y is voor jaar, M is voor maand, en D is voor dag, uiteraard. Elke herhaling is een symbool van een lege tekenruimte voor dat element. Dus je wilt maar 2 cijfers voor de maand omdat dat logisch is, en misschien geef je niet om de eerste 2 karakters van het jaar. In plaats daarvan schrijf je gewoon, jy om 11 te krijgen. Gemakkelijk genoeg, op de prachtige DATETIMEs

met behulp van DATETIME in SQL

onze nieuwe “Users” tabel:

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 proberen we al onze leden te krijgen die eerder ingelogd zijn voor 1:00PM 24 December 2011.

Voorbeeld

SELECT * FROM UsersWHERE last_login < '2011-12-24 13:00:00'

Resultaat

id gebruikersnaam eerste laatste last_login
1 ohBillNotAgain Hillary Clinton 2011-12-24 12:59:15
2 internetCreator Al Gore 2011-12-24 11:53:25

Poor George… goed, precies dezelfde syntaxis als een laatste met behalve dat we de kolomnaam hebben vervangen en een datetime string hebben gebruikt om mee te vergelijken. Het datetime gegevenstype bevat alle dezelfde elementen als het DATUMGEGEVENSTYPE plus een tijdstring. Gewoonlijk aangeduid als ‘YYYY-MM-DD HH:MM: SS’ opnieuw, in enkele citaten en met een spatie die de datumstring scheidt van de tijdstring, maken we onze datumstring voor vergelijking. Hillary en Al beiden maken de cut omdat ze ingelogd voor de ‘ 2011-12-24 13: 00:00 ‘ cut off DATETIME. Het is hier veel makkelijker dan in de praktijk. Dat komt omdat we de DateTime string met de hand inbrengen. SQL heeft een paar datumfuncties waarmee je kunt spelen waarmee je onze string kunt vervangen door:

belangrijke SQL-datumfuncties

opmerking: SQL-datumfuncties verschillen sterk tussen SQL-versies. Dit zijn MySQL.

  • CURDATE () – krijgt de huidige datum
  • CURTIME () – krijgt de huidige tijd
  • nu () – krijgt zowel de datum en tijd (in DateTime formaat)

Als u geen MySQL gebruikt, overweeg dan om te schakelen. Grapje, soort, maar geen zorgen, een eenvoudige query van Google zal u helpen bij het vinden van de juiste SQL-functies voor uw SQL-database.

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *