gpt4 book ai didi

mysql - CURRENT_TIMESTAMP()、CURRENT_DATE() + 0 和 CURRENT_DATE() 之间的时间差

转载 作者:行者123 更新时间:2023-11-29 16:10:08 29 4
gpt4 key购买 nike

当我执行此查询时:

SELECT CURRENT_TIMESTAMP(),CURRENT_DATE()+0,CURRENT_DATE;

我得到这个结果:

CURRENT_TIMESTAMP(), CURRENT_DATE()+0, CURRENT_DATE
2019-03-25 08:54:33, 20190325 , 2019-03-24

为什么 CURRENT_DATE 和 CURRENT_DATE + 0 之间存在差异?

我的服务器版本是:15.1 Distrib 10.1.37-MariaDB,适用于 debian-linux-gnu (x86_64),使用 readline 5.2

感谢您的建议:)

最佳答案

我同意结果可能有些令人惊讶。您向某个日期添加零并期望它保持在该日期。然而,这意味着您添加零个“东西”,例如零小时或零(否则:+1 是否意味着日期?)。

有一些 DBMS 可以做到这一点。例如,在 Oracle 中,somedate + 1 表示 somedate + 间隔“1”天。然而 MySQL 却没有。 MySQL 而是将数字(在您的情况下为零)添加到日期的内部数字表示中。他们为什么要这样做,我无法理解。为什么我们想看看 MySQL 内部使用什么来存储日期?这对我们来说应该不重要。因此,MySQL 所做的是将 CURRENT_DATE 转换为数值,然后添加零,这就是您在结果中看到数字的原因。

您可以从中学到什么:不要在日期中添加数字,因为它实际上没有任何意义。 2008 年 10 月 3 日加 23 是什么(与“加 23 天”或“加 23 周”或其他什么相反)?它只是没有任何意义。因此,请将其视为 DBMS 中的缺陷,甚至允许这样做,但永远不要使用它。

您当然可以随时为日期添加间隔,例如

select current_date + interval 0 day;

关于mysql - CURRENT_TIMESTAMP()、CURRENT_DATE() + 0 和 CURRENT_DATE() 之间的时间差,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55333651/

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