我正在尝试将日期时间值插入SQLite数据库。这似乎是成功的,但当我尝试检索该值时出现错误:
<无法读取数据>
SQL语句是:
create table myTable (name varchar(25), myDate DATETIME)
insert into myTable (name,mydate) Values ('fred','jan 1 2009 13:22:15')
答案 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
%% %
另一种方法是将日期/时间格式化为已经接受的格式:
答案 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对象一样。