Inspiracja , wiedza , realizacja
Jsystems

W przebudowie

Login



Java

Oracle

Linux

Android

PostgreSQL

Microsoft SQL Server

Funkcje operujące na datach

Rafał Czarkowski
Data dodania: Jun 21, 2016
Data aktualizacji: Jun 21, 2016

YEAR ( data ), MONTH ( data ), DAY ( data )

Dokonują ekstraktu z daty, odpowiednio roku, miesiąca oraz dnia.


SELECT YEAR ( '2015-01-01' ) as Rok,

MONTH( '2015-01-01' ) as Miesiac,

DAY ( '2015-01-01' ) as Dzien;




getdate() oraz sysdatetime()

Najczęściej stosowane funkcje zwracające date i czas systemowy. Są to funkcje nie przyjmujące żadnych argumentów i zwracają po prostu bierzącą datę i czas systemowy.


SELECT SYSDATETIME(),

SYSDATETIMEOFFSET(),

GETDATE(),

GETUTCDATE();




DATEADD ( datepart, liczba, data )

Dodaje (lub odejmuje) liczbę jednostek daty/czasu określonych za pomocą datepart np dni (day, dd, d), lat (years,yy,yyyy), miesięcy (month,mm,m), minut (minute,mi,n) etc. do zadanej daty. Jednostki określone mogą być za pomocą pełnej nazwy, lub skrótu. Stosowana często w warunkach filtracji, np. wszystkie zlecenia z ostatnich 14 dni. Funkcja dateadd, jest też bardzo użyteczna w określaniu zakresów.


SELECT DATEADD ( dd,-DAY( GETDATE()-1 ), GETDATE() ) as FirstDayCurrMonth,

DATEADD ( dd,-DAY( GETDATE() ), GETDATE() ) as LastDayPrevMonth;




DATEDIFF ( datepart, startdate, enddate ) – różnica pomiędzy dwoma datami (end – start) wyrażona w jednostkach określonych przez datepart. Ilość lat pomiędzy datą rozpoczęcia sprzedaży produktu a dniem dzisiejszym :


select ProductID, Name, SellStartDate,

datediff ( yy , SellStartDate , getdate() ) as RóżnicaLat

from SalesLT.Product;




DATEPART( datepart, data )

Wyciąga określoną parametrem datepart, jednostkę podanej daty.


select datepart( yy, getdate() ) as AktualnyRok,

datepart( mm, getdate() ) as AktualnyMiesiąc,

datepart( dd, getdate() ) as AktualnyDzień,

datepart( ww, getdate() ) as AktualnyTydzień;




Formaty dla funkcji datepart

Opis

Parametr

Zwracana wartość

Rok

yy, yyyy

2015

Kwartał

qq, q

2

Miesiąc

mm, m

5

Dzień roku

dy, y

101

Dzień

dd, d

2

Tydzień

wk, ww

18

Dzień tygodnia

dw

1

Godzina

hh

12

Minuta

mi, n

15

Sekunda

ss, s

45

Milisekunda

ms

123

Mikrosekunda

mcs

123456

Nanosekunda

ns

123456700


DATENAME ( datepart, data ) – funkcja pododbna do datepart, zwraca wartość znakową, określoną parametrem datepart, część daty w tym nazwę dnia tygodnia, miesiąca zgodnie z ustawieniami @@langid (bierzący język dla sesji)


select datename( dw, getdate() ) as AktualnyDzieńtygodnia,

datename( mm, getdate() ) as AktualnyMiesiąc;