SQLShack (Suomi)

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

  1. VVVVKKPP

    Seuraava esimerkki, HumanResource .Työntekijätaulukosta kysytään HireDate-arvojen SQL-päiväysmuoto

    1
    2
    3
    4
    5
    6

    KÄYTÄ AdventureWorks2014;
    GO
    SELECT HireDate, BusinessEntityID, LoginID, JobTitle
    FROM HumanResources.Employee;
    GO

    Nyt kysy HireDate -sarakkeessa neutraalilla kielimuodolla. Kyselyssä välitetään kokonaisluku, joka koostuu vuodesta 2008; kuukausi, 12 ja seitsemäs päivä.

    1
    2
    3

    SELECT HireDate, BusinessEntityID, LoginID, JobTitle
    FROM HumanResources.Employee
    WHERE 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

  2. 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.

    1
    2
    3
    4

    SELECT HireDate, BusinessEntityID, LoginID, JobTitle
    FROM HumanResources.Employee
    WHERE HireDate = ”12.07.2007”;
    GO

    Huomaa: 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>
Olen tietokantateknologi, jolla on yli 11 vuoden kokemus tietokantatekniikoista. Olen Microsoftin sertifioitu ammattilainen ja olen suorittanut tietojenkäsittelytieteen maisterin tutkinnon.
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
Viimeisimmät artikkelit kirjoittanut Prashanth Jayaram (katso kaikki)
  • 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

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *