SQLShack (Română)

Funcții de formatare a datei SQL precum DateDiff Funcția SQL și funcția DateAdd SQL sunt adesea folosite de DBA-uri, dar mulți dintre noi nu ne-am luat niciodată timpul pentru a înțelege pe deplin aceste caracteristici extrem de utile. Pentru profesioniștii care tocmai au început să utilizeze SQL Server, aceste funcții sunt unele dintre primele care au devenit familiarizați. Așadar, sperăm că acest articol va avea ceva pentru toată lumea din spectrul de competențe

Unul dintre cele mai interesante tipuri de date care sunt acceptate în lumea bazelor de date relaționale este DateTime. În acest articol, vom analiza lucrul cu tipurile de date date și ora în SQL Server. Vom înțelege noțiunile de bază ale tipului de date dată-oră și, de asemenea, vom vedea diverse exemple despre cum să interogăm câmpurile dată-oră folosind funcții încorporate în SQL Server pentru manipularea datelor, transformarea valorilor date-oră și, în câteva cazuri, efectuați operații aritmetice.

Mai întâi, să mergem mai departe să aruncăm o privire la unele dintre formatele de date SQL și la funcțiile de timp.

În mod implicit, SQL Server acceptă inerent limbile care sunt acceptate de sistemul de operare Windows. În funcție de setările locale și de colaționare atunci când efectuați instalarea SQL Server, afișarea formatului de dată SQL poate fi diferită. Tipul de date pe care le veți reda este determinat pe baza setărilor locale și a setărilor de asociere SQL Server.

În SQL Server, tipul de date DATE are două formate implicite de limbaj neutru

  1. AAAAAZZ

    Următorul exemplu, HumanResource .Tabelul angajaților este interogat pentru a vedea formatul de dată SQL al valorilor HireDate

    1
    2
    3
    4
    5
    6

    UTILIZAȚI AdventureWorks2014;
    GO
    SELECT HireDate, BusinessEntityID, LoginID, JobTitle
    FROM HumanResources.Employee;
    GO

    Acum, interogare coloana HireDate folosind un format de limbaj neutru. În interogare, trecem valoarea întreagă care constă în anul 2008; luna 12 și a 7-a zi.

    1
    2
    3

    SELECT HireDate, BusinessEntityID, LoginID, JobTitle
    FROM HumanResources.Employee
    WHERE HireDate = „20081207”;

    Notă: Practic înseamnă că valoarea de intrare este numerică; motorul SQL îl convertește intern și se termină de fapt cu o valoare de caracter. Deci, este înconjurat de ghilimele unice

  2. MM-DD-YYYY (Format pe bază de SUA)

    În acest format de dată SQL, Coloana HireDate este alimentată cu valorile „MM-ZZ-AAAA”. Acesta nu este un format întreg. Să rulăm aceeași interogare cu noul format de dată SQL al valorii de intrare ‘12 -07-2008 ’în coloana HireDate. Deci, să executăm următoarea interogare și să verificăm rezultatul. Rezultatul este același set de cinci înregistrări.

    1
    2
    3
    4

    SELECT HireDate, BusinessEntityID, LoginID, JobTitle
    FROM HumanResources.Employee
    WHERE HireDate = „07-07-2008”;
    GO

    Notă: valorile formatului de limbă neutră sunt implicite și SQL Server va face conversia necesară. Orice alt format de dată SQL necesită o conversie adecvată a operanzilor și / și valorilor.

Următoarele exemple afișează un mesaj de eroare din cauza utilizării necorespunzătoare a formatului de dată SQL.

1
2
3

SELECT HireDate, BusinessEntityID, LoginID, JobTitle
FROM HumanResources.Employee
WHERE HireDate = „25-12-2008 „;

Acum, operandul și valorile sale sunt ambele convertite într-un format standard 103. Puteți consulta aici pentru mai multe informații despre funcțiile CAST și Convert.Următorul exemplu returnează toate rândurile angajatului unde HireDate 25 -12-2008

Acum hai să începeți să aruncați o privire la unele dintre funcțiile de date pe care SQL Server le pune la dispoziție, iar aceste funcții de dată ne permit să lucrăm cu diferitele părți ale datelor și chiar să manipulăm unele dintre funcționalitățile cu care putem lucra în termeni de date.

Să vedem funcția SQL DATEPART. Această funcție returnează o valoare întreagă din coloana de dată specificată

Interogați coloana HireDate pentru a returna doar porțiunea de an a datei

Următorul exemplu generează o coloană de ieșire întregi numită și ar trebui să returneze numai valorile anului

1
2
3

SELECT DATEPART (YEAR, HireDate) AS
FROM HumanResources.Employee;
GO

Interogați HireDate coloană pentru a returna doar porțiunea de lună a datei

Următorul exemplu generează o coloană de ieșire întreagă numită și aceasta ar trebui să returneze numai valorile lunii

1
2

SELECT DATEPART (LUNĂ, HireDate) AS
FROM HumanResources.Employee;

Solicitați coloana HireDate pentru a returna doar porțiunea trimestrială a data

Următorul exemplu generează o coloană de ieșire întregi numită, iar aceasta ar trebui să returneze doar valorile lunii

1
2
3

SELECT DATEPART (QUARTER, HireDate) AS
FROM HumanResources.Employee;
GO

Următorul exemplu returnează detaliile de vânzare pentru ziua specifică a câmpului OrderDate. Exemplul arată, de asemenea, utilizarea funcției SQL DATEPART și a celor câteva argumente asociate acesteia.

Instrucțiunea SELECT selectează DATEPART, care este numele funcției și ia două argumente în paranteze. În primul rând, argumentul datepart și al doilea, expresia datei.

Să aruncăm o privire la utilizarea funcției SQL DATENAME. Aceasta este similară cu o funcție SQL DATEPART, dar returnează un șir de caractere din câmpul de dată specificat.

În continuare, să aruncăm o privire asupra funcțiilor deterministe care returnează părțile de dată și oră ca valoare întreagă. Următorul exemplu returnează valori întregi din câmpul OrderDate pentru funcțiile YEAR și MONTH corespunzătoare.

Rezultatul este o valoare agregată a TotalSales pe baza vânzărilor lunare.

Acum să luăm o privire la câteva alte funcții diferite. Și acesta la care ne vom uita se numește DATEDIFF. Funcția SQL DATEDIFF returnează o valoare întreagă semnată care ne permite să determinăm timpul scurs între două date.

Să ne jucăm cu interogarea pentru a utiliza diferite date-părți pentru a vedea rezultatele.

Următorul exemplu returnează părțile de timp dintre cele două câmpuri DateTime. În acest exemplu, ore, minute și secunde între valorile DateTime sunt calculate utilizând funcția SQL DATEDIFF

Cum pentru a utiliza funcția SQL DATEDIFF în clauza where

Următorul exemplu returnează toți angajații care lucrează cu organizația mai mult de 10 ani. Logica condițională din coloana HireDate este comparată cu mai mult de 120 de luni este menționată în clauza where.

1
2
3
4

SELECT *
FROM HumanResources.Employee
WHERE DATEDIFF (LUN, HireDate, GETDATE ()) > 120;
GO

Cum se utilizează funcția DateDiff SQL cu o funcție de agregare

Următorul exemplu returnează numărul de ani dintre prima dată de angajare și ultima dată de angajare. În acest caz, căutăm funcția HireDate minimă și funcția agregată maximă HireDate utilizate ca parametri de intrare pentru funcția SQL DATEDIFF.Cu aceste valori, s-ar putea găsi cu ușurință numărul de ani care a existat între prima angajare și ultima dată.

1
2

SELECT DATEDIFF (YEAR, MIN (HireDate), MAX (HireDate)) No_Of_Years
FROM HumanResources.Employee;

Să aruncăm o privire la funcția SQL DATEADD. Funcțiile adaugă sau scad valoarea părții date specificate și returnează valoarea modificată a părții date.

Să aruncăm o privire la următorul exemplu. Valoarea 1 este adăugată diferitelor datepart și valoarea -1 este adăugată la ora datepart și -30 sunt adăugate la minute datepart.

În rezultat, putem vedea că valoarea este operată pe Funcția GETDATE () conform părții date definite.

Notă: funcția SQL DATEADD și DATEDIFF poate fi utilizată în SELECT, UNDE, având, clauzele GROUP BY și ORDER BY.

Datadiff vs Datediff_BIG

Asta este tot deocamdată în acest articol cu format de dată SQL …

Wrap Up

Până în prezent, am văzut funcții foarte importante pentru formatul de date SQL, cum ar fi DATEPART, DATENAME, YEAR, LUNA și DAY, cu un accent deosebit pe funcția SQL DATEADD și funcția SQL DATEDIFF. Funcțiile formatului de dată SQL din serverul SQL sunt cu adevărat puternice și ajută într-adevăr la furnizarea de analize și rapoarte de date impactante. În unele cazuri, este vorba de ajustarea setărilor de colaționare, de setările de locație, de simpla reajustare a fluxului de intrare a valorii textului sau de corectarea faptului că sursa de date ar fi suficientă pentru data și ora.

Se recomandă utilizarea formatului de limbaj neutru, deoarece funcționează mai bine în majoritatea cazurilor. În cele din urmă, vedem diferența dintre funcția SQL DATEDIFF și funcția DATEDIFF_BIG SQL. Sper să vă placă acest articol. Dacă aveți întrebări, nu ezitați să comentați mai jos

  • Autor
  • Postări recente
Sunt tehnolog în baze de date, având peste 11 ani de experiență practică bogată în tehnologiile bazelor de date. Sunt profesionist certificat Microsoft și am obținut o diplomă în master în aplicații informatice.
Specialitatea mea constă în proiectarea & implementând soluții de înaltă disponibilitate și migrarea bazelor de date pe mai multe platforme. Tehnologiile care lucrează în prezent sunt SQL Server, PowerShell, Oracle și MongoDB.
Vezi toate mesajele lui Prashanth Jayaram

Ultimele mesaje ale lui Prashanth Jayaram (vezi toate)
  • O prezentare rapidă a auditului bazei de date în SQL – 28 ianuarie 2021
  • Cum se configurează Sincronizarea datelor Azure între bazele de date SQL Azure și SQL Server local – 20 ianuarie 2021
  • Cum se efectuează operațiunile de import / export Azure SQL bazate pe PowerShell – 14 ianuarie , 2021

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *