Как вставить значение datetime в базу данных SQLite?

98

Я пытаюсь вставить значение datetime в базу данных SQLite. Это кажется sucsessful, но когда я пытаюсь получить значение, возникает ошибка:

< Невозможно прочитать данные >

Операторы SQL:

create table myTable (name varchar(25), myDate DATETIME)
insert into myTable (name,mydate) Values ('fred','jan 1 2009 13:22:15')
Теги:
datetime

6 ответов

129
Лучший ответ

Формат, в котором вы нуждаетесь:

'2007-01-01 10:00:00'

то есть. yyyy-MM-dd HH: mm: ss

Если возможно, используйте параметризованный запрос, так как это освобождает вас от беспокойства по поводу деталей форматирования.

  • 0
    Как сделать один заказ по дате с такими строками?
  • 3
    Когда вы форматируете даты, подобные этим, порядок дат и лексический порядок работают одинаково. Например, '2008-02-01'> '2007-02-01', '2008-01-02'> '2008-01-01' как строки, так и даты. Но вам не нужно заботиться об этом, потому что SQLite ORDER BY позаботится о заказе за вас.
Показать ещё 2 комментария
44

Способ хранения дат в SQLite:

 yyyy-mm-dd hh:mm:ss.xxxxxx

SQLite также имеет некоторые функции даты и времени, которые вы можете использовать. См. SQL как понятны SQLite, функции даты и времени.

  • 2
    К вашему сведению, .xxxxxx здесь в синтаксисе @ TorValamo = .SSS =% f в документации по SQLite, то есть в долях секунды.
  • 2
    DateTime.parse ('2016-05-28 14:27:00 -0300'). Strftime ('% Y-% m-% d% H:% M:% S')
16

Вы должны изменить формат строки даты, которую вы поставляете, чтобы иметь возможность вставить ее с помощью функции STRFTIME. Причина в том, что нет аббревиатуры месяца:

%d  day of month: 00
%f  fractional seconds: SS.SSS
%H  hour: 00-24
%j  day of year: 001-366
%J  Julian day number
%m  month: 01-12
%M  minute: 00-59
%s  seconds since 1970-01-01
%S  seconds: 00-59
%w  day of week 0-6 with sunday==0
%W  week of year: 00-53
%Y  year: 0000-9999
%%  % 

Альтернативой является форматирование даты/времени в уже принятый формат:

  • YYYY-MM-DD
  • ГГГГ-ММ-ДД ЧЧ: ММ
  • ГГГГ-ММ-ДД ЧЧ: ММ: СС
  • ГГГГ-ММ-ДД ЧЧ: ММ: SS.SSS
  • YYYY-MM-DDThh: MM
  • YYYY-MM-ДДTчч: ММ: СС
  • YYYY-MM-DDThh: ММ: СС.ссс
  • HH: MM
  • HH: MM: SS
  • HH: MM: СС.ссс
  • сейчас

Ссылка: Функции даты и времени SQLite

  • 0
    Хотя в этой таблице нет документов, в них также указано, что вы можете добавить «Z» или смещения, например «-0400».
6

Используйте CURRENT_TIMESTAMP, когда вам это нужно, вместо NOW() (который является MySQL)

  • 1
    это работает, одна вещь не так. CURRENT_TIMESTAMP возвращает дату и время без UTC, знаете ли вы, как решить эту проблему. Заранее спасибо!
5

Прочитайте Это: 1.2 Date и тип данных времени лучший тип данных для хранения даты и времени:

TEXT лучший формат: yyyy-MM-dd HH:mm:ss

Затем прочитайте эту страницу; это лучше всего объяснить о дате и времени в SQLite. Я надеюсь, что это поможет вам

  • 3
    Вы должны рассмотреть вопрос об ответе, со ссылками, которые поддерживают ваш ответ, а не просто набор ссылок
0

Это может быть не самый популярный или эффективный метод, но я склонен отказаться от сильных типов данных в SQLite, поскольку они все по существу все равно сбрасывается в виде строк.

Я написал тонкую оболочку С# вокруг библиотеки SQLite до (при использовании SQLite с С#, конечно), чтобы обрабатывать вставки и выделения из SQLite, как если бы я имел дело с объектами DateTime.

  • 0
    Не вырезать для дат, например, если вы хотите отсортировать по этому полю; Вы заканчиваете сравнением строк ...
  • 2
    Строковое сравнение дат отлично работает с порядком ГГГГ-ММ-ДД.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню