Termíny a časy jsou velmi frustrující, datové typy a SQL neznamená, že je jednodušší pracovat s než ostatní jazyky. Zatímco datum a čas jsou ve skutečnosti zcela odlišné datové typy,často jsou sloučeny do datového typu datetime. Samotná data a časy SQL jsou velmi jednoduché, i když vyžadují speciální formátování. Sloučení těchto dvou však může být jedním z nejbolestivějších úkolů, kterým budete čelit v prvních letech. Dobrým pravidlem je používat společně čas a datum pouze tehdy, když to v budoucnu nezbytně potřebujete nebo budete potřebovat. Vysvětlím, proč data a časy komplikují věci za minutu. Za prvé, podívejme se na to, jak snadný život, když jednoduše pracujete s daty.
práce s daty SQL
naše tabulka „Uživatelé“:
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.
Příklad:
SELECT *FROM UsersWHERE member_since < '2011-12-25'
Výsledek
id | jméno | poslední | member_since | |
---|---|---|---|---|
2 | internetCreator | Al | Gore | 2011-12-8 |
3 | dontMessWithTexas | George | Bush | 2011-7-9 |
Ok, řekli jsme, že do 25. prosince 2011, což znamená, že chudé Hillary není zahrnuta, protože ona je na ten den. Al sotva udělal řez, ale starý George byl daleko před naším rande. Myslím, že bychom si měli promluvit o tom, co se stalo. Až tam, kde member_since < ‚2011-12-25‘, víme, co dělali. Asi bychom mohli hádat, co se tady děje, ale já porazím mrtvého koně. Zkontrolujeme náš sloupec member_since, abychom zjistili, zda je menší než <, naše datum, které bylo napsáno v jednoduchých uvozovkách jako „2011-12-25“. Často, když googling pro pomoc s daty, vidíte tuto syntaxi označuje jako ‚YYYY-MM-DD‘, kde Y je rok, M měsíc a D den, samozřejmě. Každé opakování je symbolem prázdného znakového prostoru pro tento prvek. Tak, chcete jen 2 číslice za měsíc, protože to dává smysl, a možná se nestaráte o první 2 znaky roku. Místo toho stačí napsat, YY dostat 11. Snadné, na nádherné DATETIMEs
pomocí DATETIME v SQL
naše nová tabulka „Uživatelé:
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 |
nyní se snažíme získat všechny naše členy, kteří se přihlásili před 1: 00PM prosinec 24, 2011.
Příklad:
SELECT * FROM UsersWHERE last_login < '2011-12-24 13:00:00'
Výsledek
id | jméno | poslední | last_login | |
---|---|---|---|---|
1 | ohBillNotAgain | Hillary | Clinton | 2011-12-24 12:59:15 |
2 | internetCreator | Al | Gore | 2011-12-24 11:53:25 |
Chudák George… v Pořádku, přesně stejnou syntaxi jako poslední, s výjimkou jsme se nahrazuje název sloupce a používá DATETIME string porovnat proti. Datový typ DATETIME obsahuje všechny stejné prvky jako datový typ data plus časový řetězec. Obyčejně odkazoval se na jako ‚YYYY-MM-DD HH:MM:SS‘ Znovu, v single citáty a s mezerou oddělující datum řetězec od času string, vytváříme řetězce DATA pro srovnání. Hillary a Al oba provést řez, protože se přihlásili před ‚ 2011-12-24 13: 00:00 ‚ cut off DATETIME. Je to mnohem jednodušší, než to vypadá v praxi. Je to proto, že jsme ručně vložili řetězec DATETIME. SQL má několik funkcí data, se kterými si můžete pohrát, můžete náš řetězec nahradit:
důležité funkce data SQL
Poznámka: Funkce data SQL se v různých verzích SQL velmi liší. Jedná se o MySQL.
- CURDATE() – vrací aktuální datum
- CURTIME() – vrací aktuální čas
- NOW() – vrací datum a čas (DATETIME formátu)
Pokud používáte MySQL, zvážit přechod. Jen si dělám srandu, druh, ale bez obav, jednoduchý dotaz společnosti Google vám pomůže najít správné funkce SQL pro vaši databázi SQL.