как выбрать формат даты SQLite - PullRequest
1 голос
/ 07 сентября 2011

Sqlite использует иной подход к хранению времени по сравнению с другими базами данных:

SQLite does not have a storage class set aside for storing dates and/or times. Instead, the built-in Date And Time Functions of SQLite are capable of storing dates and times as TEXT, REAL, or INTEGER values:

**TEXT** as ISO8601 strings ("YYYY-MM-DD HH:MM:SS.SSS").
**REAL** as Julian day numbers, the number of days since noon in Greenwich on November 24, 4714 B.C. according to the proleptic Gregorian calendar.
**INTEGER** as Unix Time, the number of seconds since 1970-01-01 00:00:00 UTC.
Applications can chose to store dates and times in any of these formats and freely convert between formats using the built-in date and time functions.

Каков наилучший способ хранения данных даты в базе данных sqlite? .TEXT, REAL или INTEGER?
Меня интересует что-то вроде "использование TEXT занимает много места, использование INTEGER - это хорошо, но у вас будет большая проблема в 2038 году"

Ответы [ 3 ]

3 голосов
/ 07 сентября 2011
  • Целые числа хранятся в 64 битах, начиная с SQLite 3.0, поэтому 2038 год на самом деле не является проблемой.
  • С REAL или INTEGER вы должны выполнять вычисления в долях дней или долях секунд при вставке,С Integer разрешение составит одну секунду.С ТЕКСТОМ это одна миллисекунда.

Если вас беспокоит общее пространство, и вам не нужны миллисекунды или даты до 1970 года, тогда выберите INTEGER.

1 голос
/ 07 сентября 2011

Это правильно?

Format  Resolution      Min Year        Max Year        Bytes/Date

Text    Milliseconds    0    AD         9999  AD        23 or 46
Real    Milliseconds?   4713 BC         ????            8
Integer Seconds         1970 AD         ????            8

0 голосов
/ 26 ноября 2014

Самый простой способ, если вам не нужны доли секунды, это время (целое число секунд до или после 1970-01-01 00:00) с точностью от -4714-11-24 до 5352-11-01 10:52:47

Для расчета в удобочитаемые даты есть функция strftime

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...