SQL-päivämäärämuodon toiminnot, kuten DateDiff SQL-toimintoa ja DateAdd SQL -toimintoa käyttävät usein DBA: t, mutta monet meistä eivät koskaan käyttäneet aikaa ymmärtääkseen näitä erittäin hyödyllisiä ominaisuuksia. Ammattilaisille, jotka ovat vasta aloittaneet SQL Serverin, nämä toiminnot ovat ensimmäisiä, jotka tutustuvat. Joten toivottavasti tässä artikkelissa on jokaiselle jotakin jokaiselle taitealueelle.
Yksi mielenkiintoisimmista tietotyypeistä, joita relaatiotietokantamaailma tukee, on DateTime. Tässä artikkelissa tarkastellaan päivämäärä- ja aikatietotyyppien käyttöä SQL Serverissä. Ymmärrämme päivämäärä-aika-tietotyypin perusteet ja näemme myös useita esimerkkejä siitä, kuinka kysyä päivämäärä-aika-kenttiä käyttämällä SQL Serverin sisäänrakennettuja toimintoja tietojen manipuloimiseksi, päivämäärä-aika-arvojen muuntamiseksi ja harvoissa tapauksissa suorita aritmeettiset operaatiot.
Katsotaanpa ensin, katsotaanpa joitain suosittuja SQL-päivämäärämuotoja ja aikatoimintoja.
Oletusarvon mukaan SQL Server tukee luonnostaan kieliä joita Windows-käyttöjärjestelmä tukee. SQL-päivitysmuodon näyttö voi olla erilainen riippuen kieli- ja lajitteluasetuksista, kun teet SQL Server -asennuksen. Toistettavien tietojen tyyppi määräytyy kieliasetuksen ja SQL Server -laajennusasetuksen perusteella.
SQL Serverissä tietotyypillä DATE on kaksi oletusarvoista neutraalia kielen muotoa
-
VVVVKKPP
Seuraava esimerkki, HumanResource .Työntekijätaulukosta kysytään HireDate-arvojen SQL-päiväysmuoto
123456KÄYTÄ AdventureWorks2014;GOSELECT HireDate, BusinessEntityID, LoginID, JobTitleFROM HumanResources.Employee;GONyt kysy HireDate -sarakkeessa neutraalilla kielimuodolla. Kyselyssä välitetään kokonaisluku, joka koostuu vuodesta 2008; kuukausi, 12 ja seitsemäs päivä.
123SELECT HireDate, BusinessEntityID, LoginID, JobTitleFROM HumanResources.EmployeeWHERE HireDate = ”20081207”;Huomaa: Se tarkoittaa periaatteessa, että syötetty arvo on numeerinen; SQL-moottori muuntaa sen sisäisesti ja lopulta pääsee merkkiarvoon. Joten sitä ympäröivät yksittäiset lainausmerkit
-
KK-PP-VVVV (Yhdysvalloissa käytetty muoto)
Tässä SQL-päivämäärämuodossa Palkkapäivä -sarakkeeseen syötetään arvot KK-PP-VVVV. Tämä ei ole kokonaislukumuoto. Suoritetaan sama kysely uudella SQL-päivämäärämuodolla, jonka syöttöarvo on 12-07-2008 HireDate-sarakkeeseen. Suoritetaan siis seuraava kysely ja vahvistetaan tulos. Lähtö on sama viiden tietueen sarja.
1234SELECT HireDate, BusinessEntityID, LoginID, JobTitleFROM HumanResources.EmployeeWHERE HireDate = ”12.07.2007”;GOHuomaa: Neutraalit kielimuodon arvot ovat implisiittisiä ja SQL Server tekee tarvittavan muunnoksen. Mikä tahansa muu SQL-päiväysmuoto vaatii operandien tai arvojen oikean muuntamisen.
Seuraavissa esimerkeissä näkyy virheilmoitus, joka johtuu SQL-päivämäärämuodon väärästä käytöstä.
1
2
3
|
SELECT HireDate, BusinessEntityID, LoginID, JobTitle
FROM HumanResources.Employee
WHERE HireDate = ”25-12-2008 ”;
|
Nyt sekä operandi että sen arvot muunnetaan vakiomuodoksi 103. Tästä löydät lisätietoja CAST- ja Muunna-funktioista.Seuraava esimerkki palauttaa kaikki työntekijän rivit, joissa HireDate 25 -12-2008
Katsotaanpa nyt aloita katsomaan joitain päivämäärätoimintoja, jotka SQL Server tarjoaa meille, ja näiden päivämäärätoimintojen avulla voimme työskennellä päivämäärien eri osien kanssa ja jopa manipuloida joitain toimintoja, joita voimme käyttää päivämäärien suhteen.
Katsotaanpa DATEPART SQL -funktiota. Tämä funktio palauttaa kokonaisluvun määritetystä päivämääräsarakkeesta.
Kysele HireDate-saraketta palauttaaksesi vain päivämäärän vuosiosan.
Seuraava esimerkki luo kokonaislähtö sarakkeen nimeltä, ja tämä pitäisi palauttaa vain vuosiarvot
1
2
3
|
SELECT DATEPART (YEAR, HireDate) AS
FROM HumanResources.Employee;
GO
|
Kysele HireDate sarake palauttaa vain päivämäärän kuukauden osan.
Seuraava esimerkki luo kokonaislukulähtö sarakkeen nimeltä, ja tämän pitäisi palauttaa vain kuukauden arvot
1
2
|
VALITSE DATEPART (KUUKAUSI, HireDate) AS
FROM HumanResources.Employee;
|
Kysele HireDate-saraketta ja palauta vain päivämäärä
Seuraava esimerkki luo kokonaislähtö sarakkeen nimeltä, ja tämän pitäisi palauttaa vain kuukauden arvot
1
2
3
|
VALITSE AIKAOSA (VUOSINELJÄNNEKSI, PALVELUAIKA) AS
FROM HumanResources.Employee;
GO
|
Seuraava esimerkki palauttaa tilauksen päivämäärä -kentän tietyn päivän myyntitiedot. Esimerkki osoittaa myös DATEPART SQL -funktion käytön ja siihen liittyvät muutamat argumentit.
SELECT-käsky valitsee DATEPART-funktion nimen, ja se vie kaksi argumenttia sulkeisiin. Ensinnäkin datepart-argumentti ja toinen, date-lauseke.
Katsotaanpa DATENAME SQL -funktion käyttöä. Tämä on samanlainen kuin DATEPART SQL -funktio, mutta se palauttaa merkkijonon määritetystä päivämääräkentästä.
Seuraavaksi katsotaanpa deterministisiä funktioita, jotka palauttavat päivämäärä- ja aikaosat kokonaislukuna. Seuraava esimerkki palauttaa kokonaisluvut OrderDate-kentästä vastaaville YEAR- ja MONTH-funktioille.
Tuotos on kuukausimyyntiin perustuva TotalSales-arvon yhteenlaskettu arvo.
Otetaan nyt tarkastelu pari muuta erilaista toimintoa. Ja tätä tarkastelemme nimeltä DATEDIFF. DATEDIFF SQL -funktio palauttaa allekirjoitetun kokonaisluvun, jonka avulla voimme määrittää kuluneen ajan kahden päivämäärän välillä.
Pelataan kyselyllä, jotta voimme käyttää eri päivämääräosia nähdäksesi tulokset.
Seuraava esimerkki palauttaa kahden DateTime-kentän väliset aikaosat. Tässä esimerkissä tunnit, minuutit ja sekunnit DateTime-arvojen välillä lasketaan DATEDIFF SQL-funktiolla
Kuinka käyttää DATEDIFF SQL -funktiota where-lausekkeessa
Seuraava esimerkki palauttaa kaikki työntekijät, jotka ovat työskennelleet organisaation kanssa yli 10 vuotta. HireDate-sarakkeen ehdollista logiikkaa verrataan yli 120 kuukauteen mainitaan where-lausekkeessa.
1
2
3
4
|
VALITSE *
FROM HumanResources.Employee
WHERE DATEDIFF (MONTH, HireDate, GETDATE ()) > 120;
GO
|
Kuinka DateDiff SQL -funktiota käytetään yhteenlasketulla funktiolla
Seuraava esimerkki palauttaa ensimmäisen vuokrauspäivän välisen vuosimäärän ja viimeinen vuokrauspäivä. Tässä tapauksessa etsimme pienintä HireDate- ja HireDate-aggregaattien maksimitoimintoa, joita käytetään syöttöparametreina DATEDIFF SQL -funktiolle.Näiden arvojen avulla voisi helposti löytää, kuinka monta vuotta ensimmäisen ja viimeisen vuokran välillä oli.
1
2
|
VALITSE PÄIVÄMÄÄRÄ (VUOSI, MIN (Vuokra-päivä), MAX (Vuokra-aika) Ei_Of_Vuodet
FROM HumanResources.Employee;
|
Katsotaanpa DATEADD SQL -funktiota. Funktiot lisäävät tai vähentävät arvon määritettyyn osaan ja palauttavat muutetun arvon.
Katsotaanpa seuraava esimerkki. Arvo 1 lisätään eri datatilaan ja arvo -1 lisätään tuntiosaan ja -30 lisätään minuuttiosaan.
Lähdössä voidaan nähdä, että arvoa käytetään GETDATE () -toiminto määritetyn tietokannan mukaisesti.
Huomaa: DATEADD- ja DATEDIFF-SQL-toimintoja voidaan käyttää SELECT: ssä, WHERE, HAVING-, GROUP BY- ja ORDER BY -lausekkeet.
Datadiff vs Datediff_BIG
Kaikki tässä SQL-päivämäärämuodon artikkelissa toistaiseksi…
Pakkaa
Tähän mennessä olemme nähneet erittäin tärkeitä SQL-päivämäärämuotoilutoimintoja, kuten DATEPART, DATENAME, YEAR, MONTH ja DAY, painottaen erityisesti DATEADD SQL -funktiota ja DATEDIFF SQL -funktiota. SQL-palvelimen SQL-päivämäärämuodon toiminnot ovat todella tehokkaita ja auttavat todella tuottamaan vaikuttavia data-analyyseja ja raportteja. Joissakin tapauksissa kyse on lajittelun, sijaintiasetusten, yksinkertaisen tekstiarvon syöttövirran uudelleen säätämisestä tai tietolähteen tekemästä korjauksesta, joka riittää päivämäärä-aika-ongelmaan.
On suositeltavaa käyttää neutraalia kielimuotoa, koska se toimii useimmissa tapauksissa paremmin. Viimeinkin näemme eron DATEDIFF SQL -funktion ja DATEDIFF_BIG SQL-funktion välillä. Toivottavasti pidät tästä artikkelista. Jos sinulla on kysyttävää, kommentoi vapaasti alla.
- Kirjoittaja div>
Erikoisuuteni on suunnitella & korkean käytettävyyden ratkaisujen ja alustojen välisen DB-siirron toteuttaminen. Tällä hetkellä työskentelevät tekniikat ovat SQL Server, PowerShell, Oracle ja MongoDB.
Näytä kaikki viestit, jotka on kirjoittanut Prashanth Jayaram
- Nopea katsaus SQL-tietokannan tarkastukseen – 28. tammikuuta 2021
- Azure Data Sync -sovelluksen asettaminen Azure SQL -tietokantojen ja paikallisen SQL Serverin välille – 20. tammikuuta 2021
- Azure SQL -tietokannan tuonti- ja vientitoimintojen suorittaminen PowerShellin avulla – 14. tammikuuta , 2021