【问题标题】:how to retrieve date between two dates in sqlite database如何在sqlite数据库中检索两个日期之间的日期
【发布时间】:2012-11-03 22:00:15
【问题描述】:

OrderDate 是我的表中的日期类型字段,格式为 dd/MM/yy,该字段属于表中的所有记录。

我只需要按两个日期过滤那些订单不属于 11 月和今年。

谁能指导我如何在两个日期之间获取正确的数据。

【问题讨论】:

  • 我认为问题出在日期格式上,试试这个YYYY-MM-DD。看看这个page

标签: objective-c ios sqlite


【解决方案1】:

查询

insert into test (t) select '2012-01-15';

insert into test (t) select '2012-11-16';

select * from test where t between '2012-01-01' and '2012-02-01';

Fiddle demo

【讨论】:

  • 可以在这里看到stackoverflow.com/questions/8187288/sql-select-between-dates你可能需要处理你的旧数据
  • 谢谢,但我的表中有日期字段,并且填充为 dd/MM/yy 如何仅在查询中以 YYYY/MM/DD 格式进行比较,因为我无法设置我的领域现在以特定格式传播到整个项目中。
  • 将该表复制到另一个我们称之为 B。现在在 B 中执行更新 stmt 以更改每一行的日期,因此它的格式为 YYYY-MM-DD 记住说1 将是 01。然后运行测试
  • 您需要先更改数据,是否需要帮助
  • 我在说什么以及其他链接建议的是,如果您不将其完全保存为 YYYY-MM-DD,那么 sqlite 会将其保存为字符串而不是日期。所以在这种情况下,尝试检索日期范围将失败
【解决方案2】:

您也应该尝试操作 > 和

例如: 其中 O.Order_Date > '01/11/12' 和 O.Order_Date

【讨论】:

  • 在 sqlite 中,还有获取 DATE 的年、日和月的功能。月(O.Order_Date),年(O.Order_date)
【解决方案3】:

尝试其他格式:YYYY-MM-DD

O.Order_Date 介于 '2012-11-01' 和 '2012-11-15' 之间

http://www.sqlite.org/lang_datefunc.html

Time Strings

A time string can be in any of the following formats:

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
now
DDDDDDDDDD

【讨论】:

  • 你能试试这个简单的查询吗:SELECT Order_Date FROM T_Ohead WHERE Order_Date between '2012-11-01' and '2012-11-15' ORDER BY Order_Date
【解决方案4】:

如何从 dd/MM/yy ((comment 2, answer 2)) 到 YYYY/MM/DD?

update tableName
set date =
'20' || substr(substr(date, instr(date, '/')+1), instr(substr(date, instr(date, '/')+1), '/')+1)
|| '/' ||
case when length(substr(date, instr(date, '/')+1, instr(substr(date, instr(date, '/')+1),'/')-1))=2
then substr(date, instr(date, '/')+1, instr(substr(date, instr(date, '/')+1), '/')-1)
else '0'||substr(date, instr(date, '/')+1, instr(substr(date, instr(date, '/')+1), '/')-1)
end
|| '/' ||
case when length(substr(date,1, instr(date, '/')-1 )) =2
then substr(date,1, instr(date, '/')-1 )
else '0'||substr(date,1, instr(date, '/')-1 )
end

另外看最后两个答案here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-26
    • 2013-10-19
    相关资源
    最近更新 更多