Ziv*_*tch 13 mysql sql calendar gregorian-calendar sql-date-functions
我知道格列高利历从1582年10月15日开始,在从儒略历过渡期间,已经放弃了10天.
当我在做这个查询时:
SELECT STR_TO_DATE('1582-10-05', '%Y-%m-%d')
Run Code Online (Sandbox Code Playgroud)
我得到了这个结果:
1582-10-15 (the 10 days difference).
Run Code Online (Sandbox Code Playgroud)
但是当我试图在这些日期之间进行匹配时,我得到了原始日期(10月5日而不是15日).
例如:
SELECT STR_TO_DATE('1582-10-05', '%Y-%m-%d') = STR_TO_DATE('1582-10-15', '%Y-%m-%d')
Run Code Online (Sandbox Code Playgroud)
我得到了一个错误的回应,虽然你会期望得到一个真实的,因为10月5日实际上算作10月15日,正如我们在第一个例子中看到的那样.
任何人都可以解释这里发生了什么?
Tuğ*_*ker 12
在文件中指出的是,TO_DAYS
和FROM_DAYS
功能必须谨慎调用,因为你注意到了改造.另外,当我检查MySQL 的源代码时,我意识到STR_TO_DATE
使用与这些函数类似的方法.据我了解,切换日期对于存储或应用操作完全不安全.文件说; "Dates during a cutover are nonexistent."
也是.
另外,对于不同服务器之间的不一致,我可能会有一个解释.我有两台不同的机器,它们安装在伊斯坦布尔,土耳其和德国法兰克福.他们有相同的设置不包括本地化设置.第一个显示1,另一个显示11为日期减法查询.这意味着(以我的拙见),有关日历转换和官方文档本地化的无法解释的部分.