【问题标题】:How to deal with date in SQLite?如何处理 SQLite 中的日期?
【发布时间】:2016-08-07 18:57:35
【问题描述】:

我在 Sqlite DB 中有一个表,有两个字段 Id 和 Date(Date 是文本类型)。 我在 c# 的表中存储了一些日期。现在我想获取匹配特定日期、月份和年份的记录。 我试过的查询是:

select strftime('%m', Date) from testTbl Where id = 3;

还有:

select Date(substr(Date, 0, 10))  as daa from testTbl Where id = 3;

但是这两个查询的结果总是空的。任何人都可以帮我解决这个问题吗?

【问题讨论】:

  • 日期格式是什么?
  • c#日期字段的默认格式。 '8/7/2016 12:00:00 AM'

标签: sqlite


【解决方案1】:

建议(立即)修复

使用下面的选择

select substr(Date, 0, 10)  as daa from testTbl Where id = 3;

问题原因

问题(如果您使用Date 函数包围上述substr)是您使用的Text 类型不在预期的format

时间字符串

时间字符串可以是以下任何一种格式:

YYYY-MM-DD

YYYY-MM-DD HH:MM

YYYY-MM-DD HH:MM:SS

YYYY-MM-DD HH:MM:SS.SSS

YYYY-MM-DDTHH:MM

YYYY-MM-DDTHH:MM:SS

YYYY-MM-DDTHH:MM:SS.SSS

HH:MM

HH:MM:SS

HH:MM:SS.SSS

现在

DDDDDDDDDD

替代(更好)方法

无论如何,恕我直言,最好使用 Date 类型创建列并以下列方式插入值

insert into testTbl values (DateTime("2015-12-31"),3);

这样你就可以做到

SELECT strftime('%m/%d/%Y',Date) from testTbl where id = 3;

也可以

SELECT Date from testTbl where Date > DateTime('2016-01-01');

在 C# 中,参数化命令类似于

"insert into testTbl values (DateTime(?),?);"

带参数值myDate.ToString("yyyy-MM-dd")

无论如何,您可以实际上使用您的 current 格式获取带有 substr(Date,0,2) 的月份字符串和带有 substr(Date,5,4) 的年份。我只是建议一个替代方案,我会发现更多标准(使用内置Date格式)

【讨论】:

  • 好的,你的第一个给定查询我得到了实际字符串的日期部分。现在我想将它转换为日期类型,并从中获取月份和年份,以便我可以比较它和根据给定的月份和年份获得结果.. 我该怎么做?
  • 您问它是因为您不想在插入值时遵循替代方法?会更简单...在我再次编辑之前让我知道
  • 我也可以这样做.. 等等让我检查一下,如果有效,则无需编辑
  • 无论如何,您实际上可以使用 substr(Date,0,2) 获得月份 string 以及使用您的 current 获得 substr(Date,5,4) 的年份 格式。我只是建议一个替代方案,我会发现更多 standard (使用内置日期格式)
  • 与您的替代方法相同的问题
猜你喜欢
  • 1970-01-01
  • 2011-05-16
  • 2015-06-03
  • 2013-11-22
  • 1970-01-01
  • 2011-11-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多