首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL CURDATE()和CURRENT_TIMESTAMP返回不同的值?

问MySQL CURDATE()和CURRENT_TIMESTAMP返回不同的值?
EN

Database Administration用户
提问于 2020-01-10 01:38:57
回答 1查看 4K关注 0票数 2

由于CURRENT_DATE值和CURRENT_TIMESTAMP值在MySQL上显示的日期不同,我面临一些困惑。

场景: 1)用户从Lumen后端调用API来插入表中的数据。一个列使用CURRENT_DATE (sales_date)作为插入值,一个列使用CURRENT_TIMESTAMP (temp_timestamp)作为默认值。

2)查询如下所示:

代码语言:javascript
复制
$_reg = DB::insert("INSERT INTO t_sales(sales_no,ref_no, sales_date,customer_id,branch_id,user_id,sales_info) VALUES(?,?,curdate(),?,?,?,?)", [$a, $b, $cid, $branch, $uid,$info]);

3)查询结果会产生不同的价值。日期列显示“2020-01-09”,时间戳列显示“2020-01-10 06:44:33”(按日期插入.我在GMT+0700时区)

4)更奇怪的结果是,如果我在PC上使用CLI或SQLYog登录mysql并发布SELECT CURRENT_DATE, CURRENT_TIMESTAMP都显示了正确的日期“2020-01-10”。

环境:

  1. 流明后端位于与MySQL后端相同的物理机器上
  2. 流明明确地将时区设置到亚洲/雅加达(这不应该像PHP那样重要)
  3. MySQL版本为8.0,time_zone设置为my.cnf上的系统
  4. 系统使用Ubuntu18.04服务器,将tzdata设置为亚洲/雅加达(UTC+7)。像现在这样显示的timedatectl (当然,当我在前面插入时,它显示了环球时间和RTC时间的2020-01-09 )。

Local time: Fri 2020-01-10 06:33:37 WIB Universal time: Fri 2020-01-10 01:33:37 UTC RTC time: Fri 2020-01-10 01:33:38 Time zone: Asia/Jakarta (WIB, +0700) System clock synchronized: yes systemd-timesyncd.service active: yes RTC in local TZ: no

为什么CURRENT_DATE和CURRENT_TIMESTAMP有不同的价值?

EN

回答 1

Database Administration用户

发布于 2020-01-10 04:42:47

为什么CURRENT_DATE和CURRENT_TIMESTAMP有不同的价值?

它们返回具有不同数据类型的值。

MySQL 8.0参考手册/函数和运算符/日期和时间函数

CURRENT_DATE和CURRENT_DATE()是CURDATE()的同义词。CURDATE()将当前date返回为‘YYYY DD’或YYYYMMDD格式的值,这取决于函数是在字符串上下文中还是在数字上下文中使用。

CURRENT_TIMESTAMP和CURRENT_TIMESTAMP()现在是同义词。NOW()将当前的date和time作为‘YYYYMMDDhhmmss :mm:ss’或YYYYMMDDhhmmss格式的值返回,这取决于函数是在字符串上下文中还是在数字上下文中使用。该值在会话时区中表示。如果fsp参数指定从0到6的分数秒精度,则返回值包含该多个数字的分数秒部分。NOW()返回一个常数时间,该时间指示语句开始执行的时间。(在存储的函数或触发器中,NOW()返回函数或触发语句开始执行的时间。)这与SYSDATE()的行为不同,SYSDATE()返回其执行的确切时间。

票数 1
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/257070

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档