Praca z datą i czasem w MS SQL

Podczas pracy z MS SQL często napotyka się problemy ze zmiennymi typu: date, datetime, smalldatetime, time.

Wynika to z faktu, że w różnych środowiskach możemy mieć ustawione inne formaty daty.

Inny problem to również to, jak pozbyć się np. minut i sekund z datetime lub jak skonwertować wartość na inny typ danych.

Oto kilka przykładów:

W powyższych przykładach polecenie CONVERT pozwala na określenie stylu konwersji daty 120, czyli yyyy-mm-dd hh:mi:ss (24h).

Innym sposobem by pozbawić daty godziny jest konwersja na string.

 

1. Praca z datą i czasem w MS SQL – Użycie funkcji DATEPART

Funkcja DATEPART pozwala na wydobycie fragmentu daty, takiej jak np. rok, miesiąc czy dzień itd.

 

2. Praca z datą i czasem w MS SQL – Zmiana daty na liczbę (integer, float)

Czasami konieczna może być możliwość zamiany daty na liczbę, np. gdy chcemy ją eksportować lub program ma problem z rozumieniem daty.

 

Pierwszy przykład za pomocą mnożenia i funkcji zmienia datę na typ integer.
W połączeniu z funkcją floor typ flout pozwala nam na pozbycie się minut i sekund.

 

3. Praca z datą i czasem w MS SQL – Odejmowanie i dodawanie dat

Do odejmowania dat używamy funkcji dateadd. By dodać wartość do daty podajemy dla funkcji wartość dodatnią by odjąć ujemną.

 

Celem odjęcia daty od daty, używamy funkcji datediff. Syntax: DATEDIFF(interwał, początek, koniec)

 

4. Praca z datą i czasem w MS SQL – inny format daty

Tworząc raport np. w tabeli przestawnej, przydaje się niewystępujący w MS SQL format daty rrrrmm, a jest on niezbędny, gdy chcemy zaprezentować dane z kilku lat po miesiącach. Rozwiązanie:

Dla formatu yyyymm oraz yyyy-mm

 

5. Praca z datą i czasem w MS SQL – ustawianie formatu daty (SET DATEFORMAT)

Poniżej przykład jak przy użyciu funkcji SET DATEFORMAT ustawić format daty dla zmiennych w MS SQL.

 


EDIT:

 

 

datetime2 to nic innego jak rozwinięcie typu datetime, które zwiększa możliwości oraz precyzję przechowywania danych dot. zapisu daty i godziny.

Microsoft SQL Server starszy niż wersja 2008 (Katmai, 10.0) oferował dotychczas jedynie typy datetime  oraz smalldatetime, które z kolei poprzez to, iż oferowały w swoim formacie zapis dot. daty i godziny utrudniał pracę jedynie z samą datą lub godziną.

Ponadto typ jakim jest datetime oferuje znacznie mniejszy zakres danych ograniczony do roku wprowadzenia kalendarza gregoraińskiego, który miał miejsce w Anglii, w roku 1753 (01/01/1753 – 31/12/9999).

datetime2 zaś jest w stanie przechować dane dotyczące dat z zakresu 01/01/0001 – 31/12/9999.

Jeśli mowa o precyzji i rozmiarze dla tych dwóch typów wynoszą one odpowiednio:

datetime : 0,00333 sekund oraz 8 bajtów

datetime2 : 100 nanosekund oraz 6-8 bajtów


 

Podziel się:

1 komentarz

    • Krissus, 04/08/2017, 21:41

    Odpowiedz

    Bardzo ciekawy i pomocny artykuł. Warto dodać od kiedy zmienna datetime2 pojawila się w mssql.

    Wiktor oby tak dalej. Dobra robota.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.