1. Nauka
  2. /
  3. Kursy
  4. /
  5. Eksploracyjna analiza danych w SQL

Connected

ćwiczenie

Porównywanie dat

Pracując ze znacznikami czasu, często chcesz znaleźć wszystkie obserwacje z konkretnego dnia. Jeśli jednak w porównaniu podasz tylko datę, możesz otrzymać nieoczekiwane wyniki. Zapytanie:

SELECT count(*) 
  FROM evanston311
 WHERE date_created = '2018-01-02';

zwraca 0, mimo że 2 stycznia 2018 roku zarejestrowano 49 zgłoszeń.

Dzieje się tak, ponieważ daty są automatycznie konwertowane na znaczniki czasu podczas porównania z wartością typu timestamp. Pola czasu są wtedy ustawiane na zero:

SELECT '2018-01-02'::timestamp;
 2018-01-02 00:00:00

Pracując jednocześnie ze znacznikami czasu i datami, warto o tym pamiętać.

Instrukcje 1/3

undefined XP
  • 1
    • Policz liczbę zgłoszeń Evanston 311 utworzonych 31 stycznia 2017 roku, rzutując date_created na typ date.
  • 2
    • Policz liczbę zgłoszeń Evanston 311 utworzonych 29 lutego 2016 roku, używając operatorów >= i <.
  • 3
    • Policz liczbę zgłoszeń utworzonych 13 marca 2017 roku.
    • Określ górne ograniczenie, dodając 1 do dolnego ograniczenia.