Co to jest CURRENT_DATETIME?
Funkcja CURRENT_DATETIME w języku SQL, w tym w Google BigQuery, zwraca aktualną datę i godzinę w momencie wykonywania zapytania. Domyślnie data i godzina są w strefie czasowej UTC.
Zastosowanie CURRENT_DATETIME
Funkcja CURRENT_DATETIME jest szeroko stosowana w analizie danych, przetwarzaniu zapytań i innych scenariuszach związanych z BigQuery. Oto kilka przykładów:
- Dodawanie znaczników czasowych do raportów
- Porównywanie dat
- Obliczanie okresów czasu
- Tworzenie kolumn z datą i godziną
- Filtrowanie danych według daty i godziny
- Grupawanie danych według daty i godziny
Przykład użycia w BigQuery
Załóżmy, że mamy tabelę o nazwie „events” z następującymi kolumnami:
event_id | event_name | event_timestamp |
---|
Możemy użyć funkcji CURRENT_DATETIME, aby dodać nową kolumnę z aktualną datą i godziną do tabeli „events” podczas wstawiania nowych danych:
INSERT INTO `your_project.your_dataset.events` (event_id, event_name, event_timestamp, created_at)
VALUES (1, 'User login', '2024-09-28 10:00:00', CURRENT_DATETIME());
Możemy również użyć funkcji CURRENT_DATETIME, aby filtrować dane z tabeli „events” według daty i godziny:
SELECT *
FROM `your_project.your_dataset.events`
WHERE event_timestamp >= CURRENT_DATETIME() - INTERVAL '1 day';
Najczęstsze błędy i sposoby ich unikania
Najczęstszym błędem jest użycie funkcji CURRENT_DATETIME w zapytaniach, które są wykonywane w różnych momentach czasu. Może to prowadzić do niekonsekwentnych wyników.
Aby uniknąć tego błędu, zaleca się użycie funkcji CURRENT_DATETIME tylko w zapytaniach, które są wykonywane w tym samym czasie. Jeśli potrzebujesz użyć funkcji CURRENT_DATETIME w zapytaniach, które są wykonywane w różnych momentach czasu, możesz użyć funkcji TIMESTAMP_MILLIS(), która zwraca aktualny znacznik czasu w milisekundach.
Optymalizacje i najlepsze praktyki
Aby zoptymalizować zapytania z użyciem funkcji CURRENT_DATETIME, zaleca się:
- Używać funkcji CURRENT_DATETIME tylko wtedy, gdy jest to konieczne.
- Unikać używania funkcji CURRENT_DATETIME w podzapytaniach.
- Używać funkcji TIMESTAMP_MILLIS(), jeśli potrzebujesz użyć funkcji CURRENT_DATETIME w zapytaniach, które są wykonywane w różnych momentach czasu.
Porównanie z innymi dialektami SQL
Funkcja CURRENT_DATETIME jest dostępna w większości dialektów SQL, ale może mieć różne nazwy i zachowanie. Na przykład w MySQL funkcja ta nazywa się NOW(), a w PostgreSQL nazywa się CURRENT_TIMESTAMP.
W BigQuery funkcja CURRENT_DATETIME zwraca datę i godzinę w strefie czasowej UTC, podczas gdy w innych dialektach SQL może zwracać datę i godzinę w strefie czasowej serwera lub w strefie czasowej użytkownika.