SQLite
 sql >> Baza danych >  >> RDS >> SQLite

Jak działa funkcja Strftime() w SQLite

SQLite strftime() funkcja umożliwia zwrócenie wartości daty i godziny w określonym formacie.

Rzeczywista zwrócona wartość daty/godziny jest oparta na ciągu godziny podanym jako argument podczas wywoływania funkcji, a także na wszystkich dołączonych modyfikatorach (jako argumentach opcjonalnych). Modyfikator umożliwia zmianę daty, na przykład dodanie liczby dni, ustawienie czasu lokalnego itp.

Składnia

Składnia wygląda tak:

strftime(format, timestring, modifier, modifier, ...)

format argument może być dowolną kombinacją prawidłowych podstawień ciągu formatu dla strftime() funkcja.

timestring argument musi być prawidłowym ciągiem czasu.

modifier argumenty są opcjonalne. Możesz podać jeden lub więcej modyfikatorów. Jeśli podasz modyfikator, musi to być prawidłowy modyfikator.

Przykład

Oto przykład do zademonstrowania.

SELECT strftime('%Y-%m-%d %H:%M:%S', 'now');

Wynik:

2020-04-29 01:29:54

now ciąg czasu jest konwertowany na bieżącą datę i godzinę na podstawie podanego ciągu formatu.

W tym przypadku mój ciąg formatu zwraca dokładnie ten sam wynik, co datetime('now') by wrócił.

Dodaj modyfikator

Możemy zmodyfikować poprzedni wynik za pomocą modyfikatora. Oto przykład.

SELECT strftime('%Y-%m-%d %H:%M:%S', 'now', '+2 hours');

Wynik:

2020-04-29 03:31:50

W tym przypadku dodałem dwie godziny do czasu.

Wiele modyfikatorów

Możesz dodać wiele modyfikatorów. Oto przykład dodania kolejnego modyfikatora do poprzedniego przykładu.

SELECT strftime('%Y-%m-%d %H:%M:%S', 'now', '+2 hours', 'localtime');

Wynik:

2020-04-29 13:33:22

W moim przypadku localtime modyfikator spowodował przesunięcie czasu do przodu.

Dzieje się tak, ponieważ localtime modyfikator zakłada, że ​​podany ciąg czasu jest w uniwersalnym czasie koordynowanym (UTC). Następnie dostosowuje ciąg czasu tak, aby wyświetlał czas lokalny.

Możesz uzyskać inny wynik, w zależności od czasu lokalnego.

Tutaj ponownie porównuje oryginalny czas lokalny ze zmodyfikowanym wynikiem:

SELECT 
  strftime('%Y-%m-%d %H:%M:%S', 'now', 'localtime') AS "Local",
  strftime('%Y-%m-%d %H:%M:%S', 'now', '+2 hours', 'localtime') AS "Modified";

Wynik:

Local                Modified           
-------------------  -------------------
2020-04-29 11:34:57  2020-04-29 13:34:57

Czas Uniksa/epoki

Możesz użyć %s ciąg formatu (małe litery), aby obliczyć czas epoki.

SELECT strftime('%s', 'now');

Wynik:

1588124826

Czas epoki (znany również jako czas epoki, czas POSIX, sekundy od epoki lub czas epoki UNIX) to liczba sekund od 1970-01-01.

Czas uniksowy jest szeroko stosowany w systemach operacyjnych i formatach plików.

Dzień Juliana

Możesz użyć %J aby zwrócić Dzień Juliański.

Dzień Juliański to liczba dni od południa w Greenwich 24 listopada 4714 r. p.n.e. (przy użyciu proleptycznego kalendarza gregoriańskiego).

Jeśli używasz proleptycznego kalendarza juliańskiego, jest to poniedziałek, 1 stycznia 4713 pne.

Dzień juliański jest zwykle używany przez astronomów, oprogramowanie itp. do obliczania dni, które upłynęły między dwoma wydarzeniami.

Oto jak zwrócić dzień juliański za pomocą strftime() funkcja.

SELECT strftime('%J', 'now');

Wynik:

2458968.575441667               

Innym sposobem na zrobienie tego w SQLite jest użycie julianday() funkcja.

Zakres dat

Podobnie jak w przypadku wszystkich funkcji daty i czasu SQLite, strftime() działa tylko dla dat od 0000-01-01 00:00:00 do 9999-12-31 23:59:59 (dni juliańskie od 1721059.5 do 5373484.5).

W przypadku dat spoza tego zakresu wyniki są niezdefiniowane.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Zdobądź pierwszy poniedziałek roku w SQLite

  2. 2 sposoby na zwrócenie uniksowego znacznika czasu w SQLite

  3. NullPointerException w getReadableDatabase()

  4. group_concat i jak używać numeru wiersza w sqlite

  5. Co to jest wygenerowana kolumna?