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

Bra*_*rad 106 sql sqlite datetime

我试图将日期时间值插入SQLite数据库.这似乎是成功的,但当我尝试检索值时,有一个错误:

<无法读取数据>

SQL语句是:

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

ito*_*son 144

您需要的格式是:

'2007-01-01 10:00:00'
Run Code Online (Sandbox Code Playgroud)

即yyyy-MM-dd HH:mm:ss

但是,如果可能,请使用参数化查询,这样可以使您免于担心格式化详细信息.

  • 请注意,使用词法排序无法可靠地比较具有不同精度的日期,例如"SELECT'2007-01-02 10:00:00'>'2007-01-02 10:00';" 返回1但是"SELECT datetime('2007-01-02 10:00:00')> datetime('2007-01-02 10:00');" 返回0. (7认同)
  • 当您设置这样的日期格式时,日期排序和词汇排序会相同.例如'2008-02-01'>'2007-02-01','2008-01-02'>'2008-01-01'作为字符串和日期.但是你并不一定非常需要关心这一点,因为SQLite ORDER BY将负责为你订购. (3认同)

Tor*_*amo 46

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

 yyyy-mm-dd hh:mm:ss.xxxxxx
Run Code Online (Sandbox Code Playgroud)

SQLite还有一些可以使用的日期和时间函数.请参阅SQLite,日期和时间函数所理解的SQL.

  • 仅供参考,`.xxxxxx`在@TorValamo的语法中= .SSS` =%f在SQLite文档中,即小数秒. (2认同)
  • DateTime.parse('2016-05-28 14:27:00 -0300').strftime('%Y-%m-%d%H:%M:%S') (2认同)

OMG*_*ies 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
%%  % 
Run Code Online (Sandbox Code Playgroud)

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

  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. 现在

参考:SQLite日期和时间函数


fre*_*ng_ 8

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

  • 这是有效的,有一件事是错误的。CURRENT_TIMESTAMP 返回没有 UTC 的日期时间,您知道如何解决此问题吗?提前致谢! (2认同)

小智 7

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

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

然后阅读页; 这是关于日期和时间的最佳解释SQLite.我希望这对你有帮助

  • 您应该考虑回答问题,使用支持您答案的链接,而不仅仅是一堆链接 (3认同)