比较 SQL 标准格式的 SQL 日期。它总是有效吗?
Comparing SQL dates in SQL Standard format. Does it work always?
我正在寻找一些关于在 SQLite 中比较日期的答案,一些答案指出只要你的日期格式是:
YYYY-MM-DD HH:MM:SS(假设 HH:MM:SS 为 24 小时格式)
如果将它们作为字符串进行比较(将一个日期与另一个日期进行比较,或者检查一个日期是否在两个日期之间),则总是没问题的。类似于:
SELECT * FROM table WHERE 'YYYY-MM-DD' BETWEEN 'YYYY-MM-DD' AND 'YYYY-MM-DD'
我注意到这种格式的一件事是它以最高可能的 "range"、年份开始,然后是月份等。我试图了解这是否总是有效(算法不是我的强项),所以我的问题是,是否有任何 "edge" 情况下这将不起作用?
只要您的日期在 9999 年 1 月 1 日和 9999 年 12 月 31 日之间,这就可以使用。这对大多数应用程序来说已经足够了,但还不够 "always"。
SQLite 在 1000 之前的年份前面加上零。如果不是,则范围实际上是从 1000 年 1 月 1 日开始。
我正在寻找一些关于在 SQLite 中比较日期的答案,一些答案指出只要你的日期格式是:
YYYY-MM-DD HH:MM:SS(假设 HH:MM:SS 为 24 小时格式)
如果将它们作为字符串进行比较(将一个日期与另一个日期进行比较,或者检查一个日期是否在两个日期之间),则总是没问题的。类似于:
SELECT * FROM table WHERE 'YYYY-MM-DD' BETWEEN 'YYYY-MM-DD' AND 'YYYY-MM-DD'
我注意到这种格式的一件事是它以最高可能的 "range"、年份开始,然后是月份等。我试图了解这是否总是有效(算法不是我的强项),所以我的问题是,是否有任何 "edge" 情况下这将不起作用?
只要您的日期在 9999 年 1 月 1 日和 9999 年 12 月 31 日之间,这就可以使用。这对大多数应用程序来说已经足够了,但还不够 "always"。
SQLite 在 1000 之前的年份前面加上零。如果不是,则范围实际上是从 1000 年 1 月 1 日开始。