Funkcja Date w SQL

Data SQL

Najtrudniejszym zadaniem, gdy pracujemy z datami, jest upewnienie się, że format daty, którą wstawiamy, pasuje do formatu kolumny datowej w bazie danych.

Jeśli dane zawierają tylko część daty, uruchomienie zapytania nie powinno napotkać na problemy. Ale jeśli chodzi o czas, sytuacja jest nieco bardziej skomplikowana.

Zanim przejdziemy do omówienia złożoności zapytań dotyczących dat, przyjrzyjmy się najważniejszym wbudowanym funkcjom przetwarzania dat.

Funkcja

Opis

Funkcja Opis
Funkcja NOW() Zwraca bieżącą datę i czas
Funkcja CURDATE() Zwraca bieżącą datę
Funkcja CURTIME() Zwraca bieżącą godzinę
Funkcja DATE() Wyodrębnienie części daty z wyrażenia daty/czasu
Funkcja EXTRACT() Zwraca pojedyncze części daty/czasu według kryterium
Funkcja DATE_ADD() Dodawanie określonej liczby jednostek czasu do daty
Funkcja DATE_SUB() Odejmowanie określonej liczby jednostek czasu od daty
Funkcja DATEDIFF() Zwraca liczbę dni między dwoma datami
Funkcja DATE_FORMAT() Wyświetlanie dat/czasu w różnych formatach

Funkcje dat SQL Server

Poniższa tabela zawiera najważniejsze wbudowane funkcje dat w SQL Serverze:

Funkcja Opis
Funkcja GETDATE() Zwraca bieżącą datę i czas
Funkcja DATEPART() Zwraca pojedyncze części daty/czasu
Funkcja DATEADD() Dodawanie lub odejmowanie określonej liczby jednostek czasu od daty
Funkcja DATEDIFF() Zwraca czas między dwoma datami
Funkcja CONVERT() Wyświetlanie dat/czasu w różnych formatach

Typ danych SQL Date

MySQL używa poniższych typów danych do przechowywania dat lub wartości dat/czasu w bazie danych:

  • DATE - Format YYYY-MM-DD
  • DATETIME - Format: YYYY-MM-DD HH:MM:SS
  • TIMESTAMP - Format: YYYY-MM-DD HH:MM:SS
  • YEAR - Format YYYY lub YY

SQL Server używa następujących typów danych do przechowywania dat lub wartości dat/czasu w bazie danych:

  • DATE - Format YYYY-MM-DD
  • DATETIME - Format: YYYY-MM-DD HH:MM:SS
  • SMALLDATETIME - Format: YYYY-MM-DD HH:MM:SS
  • TIMESTAMP - Format: Unikalny numer

Przetwarzanie dat w SQL

Jeśli nie dotyczy część czasowa, możemy łatwo porównać dwie daty!

Załóżmy, że mamy poniższą tabelę "Orders":

OrderId ProductName OrderDate
1 computer 2008-12-26
2 printer 2008-12-26
3 electrograph 2008-11-12
4 telephone 2008-10-19

Teraz, chcemy wybrać z powyższej tabeli rekordy, gdzie OrderDate wynosi "2008-12-26".

Używamy następującego zapytania SELECT:

SELECT * FROM Orders WHERE OrderDate='2008-12-26'

Zbiór wyników:

OrderId ProductName OrderDate
1 computer 2008-12-26
3 electrograph 2008-12-26

Załóżmy, że klasa "Orders" wygląda tak (proszę zauważyć część czasową kolumny "OrderDate"):

OrderId ProductName OrderDate
1 computer 2008-12-26 16:23:55
2 printer 2008-12-26 10:45:26
3 electrograph 2008-11-12 14:12:08
4 telephone 2008-10-19 12:56:10

Jeśli użyjemy powyższego zapytania SELECT:

SELECT * FROM Orders WHERE OrderDate='2008-12-26'

Nie uzyskamy wyników. To jest spowodowane tym, że data w zapytaniu nie zawiera części czasowej.

Wskazówka:Jeśli chcesz, aby zapytanie było proste i łatwe do utrzymania, nie używaj części czasowej daty w datach!