如何将日期时间值插入SQLite数据库?

时间:2009-12-19 18:19:45

标签: sql datetime sqlite

我正在尝试将日期时间值插入SQLite数据库。这似乎是成功的,但当我尝试检索该值时出现错误:

  

<无法读取数据>

SQL语句是:

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

6 个答案:

答案 0 :(得分:140)

您需要的格式是:

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

即。 yyyy-MM-dd HH:mm:ss

但是,如果可能,请使用参数化查询,因为这样可以免除担心格式详细信息。

答案 1 :(得分:46)

在SQLite中存储日期的方法是:

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

SQLite还有一些可以使用的日期和时间函数。请参阅SQL As Understood By SQLite, Date And Time Functions

答案 2 :(得分:17)

您必须更改所提供日期字符串的格式才能使用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
%%  % 

另一种方法是将日期/时间格式化为已经接受的格式:

  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. 现在
  12. 参考:SQLite Date & Time functions

答案 3 :(得分:8)

在需要时使用CURRENT_TIMESTAMP,而不是NOW()(即MySQL)

答案 4 :(得分:6)

阅读This:1.2 Date和时间数据类型 存储日期和时间的最佳数据类型是:

TEXT最佳格式为:yyyy-MM-dd HH:mm:ss

然后阅读this页面;这是SQLite中关于日期和时间的最佳解释。 我希望这能帮到你

答案 5 :(得分:0)

这可能不是最流行或最有效的方法,但我倾向于在SQLite中放弃强大的数据类型,因为无论如何它们都基本上都是作为字符串转储的。

我之前在SQLite库周围编写了一个精简的C#包装器(当然,当使用带有C#的SQLite时)来处理SQLite的插入和提取,就像处理DateTime对象一样。