gpt4 book ai didi

sqlite - 在sqlite中用字符串dd-mm-yyyy格式比较日期

转载 作者:行者123 更新时间:2023-12-03 16:53:14 26 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





SQLite DateTime comparison

(12 个回答)


8年前关闭。




我以“dd-mm-yyyy”格式将日期存储为字符串。现在我想做一个这样的比较:

SELECT strftime('%d/%m/%Y', myDate) as myDate
FROM myTable
WHERE myDate>='01/07/2013' and myDate<='24/07/2013'

但我什么也得不到。这个查询有什么问题?。

这不是一个重复的问题。 我将所有内容存储为字符串,而不是日期或日期时间。我试图在日期格式的字符串之间进行比较。因此,否决票是不公平的。

最佳答案

您无法使用当前设置使查询像这样工作:

I'm storing the date as a String so I guess with the using of strftime I can get what I want. Or am I wrong?



基本上: 你错了!

这里的问题是这样格式化的字符串将无法按您想要的方式排序。

具体来说:
myDate>='01/07/2013' and myDate<='24/07/2013'

在这里,任何一年中任何一个月的 1 号和 24 号之间的任何日期都将与此匹配。 IE。这将匹配:“02/01/1900”,这将匹配:“02/12/2099”。

这样做的原因是字符串比较是字母数字,而不是数字(或日期)。 “02”大于“01”小于“24”,剩下的只是多余的。

将日期格式化为字符串的“逻辑”方法是从最重要的值开始,然后向下工作,即。这种格式:“yyyy/mm/dd”,而不是相反,但存储日期的真正逻辑方法是将其存储为日期,而不是字符串。

只有处理字符串的方法是将每个字符串转换为日期并使用它,但 最好的方法是修复您的架构。

如果您 绝对无法更改您当前的架构,这是一种使其工作的方法,但我 不建议这样做 :
where (substr(myDate, 7, 4) || '-' || substr(myDate, 4, 2) || '-' || substr(myDate, 1, 2)) between '2013-07-01' and '2013-07-24'

在进行比较之前,这会将字符串分开,并以正确的顺序将它们重新组合在一起。还要注意那里最后两个日期的格式。

关于sqlite - 在sqlite中用字符串dd-mm-yyyy格式比较日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17507477/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com