SQLite中存储在表中的日期是错误的

时间:2009-08-20 10:22:57

标签: sqlite

你能告诉我SQLite数据库中的日期是否正常 12/3/1899而不是12/3/2009。 我以这种格式保存时插入了正确的日期。我无法理解是什么原因。必须在Insert Statement中进行哪些转换。任何人都可以帮助我。

CREATE TABLE [PIs] ( [PIGUID] GUID PRIMARY KEY NOT NULL,
[CompanyGUID] GUID NOT NULL,
[No] varCHAR(50) NOT NULL,
[Dt] TIMESTAMP NOT NULL,
[SupplierLgrGUID] GUID NOT NULL,
[SupplierLgrAddressGUID] GUID NOT NULL,
[SupplierBillNo] varCHAR(50) NULL,
[SupplierBillDt] TIMESTAMP NULL,
[CrDays] INTEGER NULL,
[DueDt] TIMESTAMP NULL,
[Narration] varCHAR(300) NULL,
[CreatedDt] TIMESTAMP NOT NULL,
[LastEditedDt] TIMESTAMP NOT NULL,
)

我的插入声明如下:

INSERT INTO PIs(
  PIGUID,CompanyGUID,No,Dt,SupplierLgrGUID,SupplierLgrAddressGUID,
  SupplierBillNo,SupplierBillDt,CrDays,DueDt,Narration,CreatedDt,
  LastEditedDt)
VALUES(
  '806aeec2-762a-432e-800f-0354df3b7852' ,
  '375888f5-e1a5-4c75-9154-62ffc83dca97', 'PI/0809/004' ,
  datetime('8/19/2009 12:44:25 PM'),
  'ff376218-c2d9-4e02-86e6-e90c8d5efc43',
  '7dad4725-2e37-4596-88f4-7b088f0d91c4', '0021',
  datetime('8/19/2009 12:44:25 PM'), 12,
  datetime('8/31/2009 12:44:25 PM'), 'narration',
  datetime('now'),datetime('now')
)

我安装了SQLite 3.3.8,我的操作系统是Windows Vista。

任何帮助将不胜感激..

此致

阿西

3 个答案:

答案 0 :(得分:5)

日期的sqlite格式是ISO标准,即YYYY-MM-DD而不是您使用的格式 见Sqllite date format

尝试     选择日期('现在'); 看

答案 1 :(得分:2)

这个link有一些信息,你应该阅读使用TIMESTAMP和DATETIME for SQLite。

以下是摘录:

  

TIMESTAMP,DATETIME   用于存储日期/时间组合的字符串类型,长度不限。所需格式为'YYYY-MM-DD HH:MM:SS',不遵循此模式的任何内容都将被忽略。

答案 2 :(得分:0)

我也遇到了这个问题...如果你在这里使用VB.NET是如何插入TimeStamp的,我的意思是DateTime到SQLlite

DateTime.UtcNow.ToString(“o”)

重要的部分是.ToString(“o”)因为这会将日期格式化为ISO 8601

以下链接解释了格式的所有内容 - http://msdn.microsoft.com/en-us/library/az4se3k1.aspx#Roundtrip

进入数据库时​​看起来像这样。 2010-12-16T02:09:55.7870590Z

但是在插入数据后,它看起来像这样。

12/16/2010 2:09:55 AM

希望这有助于其他人。