SqLite – typy danych oraz zapis daty

blog.lantkowiak.pl 8 lat temu

W Androidzie mamy dostępną wbudowaną relacyjną baze danych – SqLite. Jak można wnioskować po nazwie, ta baza danych jest trochę okrojona w porównaniu do baz takich jak Oracle, Sybase czy PostgreSQL.

Dostępne typy danych w SqlLite to:

  • INTEGER – służy do przechowywania liczb całkowitych; w zależności od wielkości wartości przechowywane są na 1, 2, 3, 4, 6 lub 8 bitach
  • REAL – liczby zmiennoprzecinkowe
  • TEXT- ciągi znaków
  • BLOB – dane binarne

Jak widać nie ma tego za wiele, ale wystarczająco, aby zapewnić nam wszystko czego potrzebujemy. Przynajmniej w większości wypadków

Chociaż po chwili zastanowienia… gdzie jest typ Date? Jak zapisywać datę? Tyle pytań bez odpowiedzi… Aż do teraz!

Data może być przechowywana w bazie danych w jednym z trzech formatów:

  • TEXT – data jest zapisana w formacie ISO8601, czyli „YYYY-MM-DD HH:MM:SS.SSS”
  • REAL – data jest zapisana jako liczba dni, które mineły od 24 listopada 4714 r. p.n.e., czyli tak zwana data Juliańska
  • INTEGER – czas UNIXowy, czyli liczba milisekund, które mineły od 1 stycznia 1970r.

Do operacji na datach SqLite dostarcza 5 metod:

  1. date(timestring, …)
  2. time(timestring, …)
  3. datetime(timestring, …)
  4. julianday(timestring, …)
  5. strftime(format, timestring, …)

Pierwsze 4 funkcje przyjmują string jako pierwszy argument, a następnie dodatkowe argumenty. Funckja strftime przyjmuje jako pierwszy argument format daty, następnie wartość daty jako string oraz dodatkowe argumenty jako kolejne argumenty.

String opisujący date może być w jednym z poniższych formatów:

  1. YYYY-MM-DD
  2. YYYY-MM-DD HH:MM
  3. YYYY-MM-DD HH:MM:SS
  4. YYYY-MM-DD HH:MM:SS.SSS
  5. YYYY-MM-DDTHH:MM
  6. YYYY-MM-DDTHH:MM:SS
  7. YYYY-MM-DDTHH:MM:SS.SSS
  8. HH:MM
  9. HH:MM:SS
  10. HH:MM:SS.SSS
  11. now
  12. DDDDDDDDDD

Formaty od 1 do 4 wydają się być oczywiste. W formatach 5-7 występuję stały znak T, który służy jako separator daty i godziny. Formaty 8-10 służą do przechowywania samej godziny. Format 11 to string now, który odpowiada aktualnej dacie. Ostatni format jest to liczba zmiennoprzecinkowa opisująca date Juliańską.

Idź do oryginalnego materiału