| Termin | Definicja |
|---|---|
| Funkcja daty i czasu | Funkcja daty i czasu to kategoria funkcji SQL wykonujących operacje na wartościach chronologicznych. Do czego służą funkcje daty i czasu w SQLFunkcje daty i czasu w SQL służą do odczytywania, przekształcania i porównywania wartości opisujących dzień, godzinę albo przedział czasowy. Ułatwiają wykonywanie operacji bezpośrednio w zapytaniu, na przykład wyznaczenie roku z daty zamówienia, sprawdzenie, czy rekord powstał w określonym miesiącu, obliczenie liczby dni między terminami albo zaokrąglenie znacznika czasu do dnia. Dzięki temu aplikacja nie musi pobierać wszystkich danych i wykonywać obliczeń osobno w kodzie programu. W relacyjnych bazach danych wartości chronologiczne są przechowywane w typach przeznaczonych do określonych zastosowań. Typ Odczytywanie części daty i czasuCzęstym zadaniem jest pobranie pojedynczego składnika wartości chronologicznej. Z daty można wyodrębnić rok, miesiąc i dzień, a z czasu godzinę, minutę i sekundę. Takie operacje wykorzystuje się przy grupowaniu danych według miesięcy, tworzeniu zestawień rocznych, filtrowaniu zdarzeń z określonej doby oraz budowaniu raportów okresowych. Jeżeli kolumna zawiera znacznik czasu, wydzielenie samej daty pozwala porównać dzień zdarzenia bez uwzględniania godziny. W standardzie SQL do pobierania pól z wartości daty lub czasu stosuje się wyrażenie Dodawanie okresów, różnice i formatowanieFunkcje daty i czasu pozwalają dodawać lub odejmować okresy od wartości chronologicznych. Przykładowo można wyznaczyć termin przypadający określoną liczbę dni po utworzeniu zgłoszenia albo obliczyć datę rozpoczęcia poprzedniego miesiąca. Nie każda jednostka zachowuje się jednak tak samo. Dodanie jednego dnia oznacza przesunięcie o dobę kalendarzową, natomiast dodanie miesiąca może prowadzić do problemu, gdy dzień początkowy nie występuje w miesiącu wynikowym, na przykład przy przejściu z daty końca miesiąca do krótszego miesiąca. Różnicę między wartościami można wyrażać w dniach, godzinach lub innych jednostkach, ale sposób obliczenia zależy od funkcji udostępnionej przez silnik. Warto odróżnić różnicę kalendarzową od czasu trwania mierzonego w sekundach. Zmiana daty z 1 marca na 2 marca obejmuje jeden dzień kalendarzowy, lecz obliczenia związane ze strefami czasowymi mogą dać inną liczbę godzin. Formatowanie służy natomiast do przedstawienia daty jako tekstu, na przykład w formacie rok-miesiąc-dzień. Konwersja do tekstu powinna być wykonywana dopiero na etapie prezentacji, ponieważ wcześniejsze sformatowanie utrudnia sortowanie i dalsze obliczenia. Strefy czasowe i poprawne użycie w zapytaniachZnacznik czasu bez informacji o strefie nie wskazuje jednoznacznie chwili na osi czasu. Ta sama wartość, na przykład godzina 10:00, może oznaczać różne momenty w zależności od miejsca, w którym została zapisana lub odczytana. W systemach obsługujących użytkowników z wielu lokalizacji należy rozróżnić czas lokalny, czas UTC oraz czas przechowywany razem z przesunięciem strefowym. Szczególnej uwagi wymagają momenty zmiany czasu urzędowego, ponieważ niektóre godziny mogą wystąpić dwukrotnie, a inne mogą zostać pominięte. Filtrowanie po dacie powinno uwzględniać typ kolumny i możliwość istnienia części czasowej. Dla zakresu obejmującego cały dzień bezpieczniejsze jest porównanie od początku wskazanego dnia do początku dnia następnego niż użycie wartości końcowej z ręcznie wpisaną godziną 23:59:59. Takie podejście obejmuje również ułamkowe sekundy i ogranicza błędy graniczne. Nie należy też stosować funkcji do kolumny w warunku filtrowania bez sprawdzenia wpływu na indeksy, ponieważ przekształcenie każdej wartości może uniemożliwić wydajne wyszukiwanie. Przy diagnostyce problemów z datami trzeba sprawdzić typ kolumny, ustawienia strefy, sposób konwersji oraz format danych wejściowych. |