由于CURRENT_DATE值和CURRENT_TIMESTAMP值在MySQL上显示的日期不同,我面临一些困惑。
场景: 1)用户从Lumen后端调用API来插入表中的数据。一个列使用CURRENT_DATE (sales_date)作为插入值,一个列使用CURRENT_TIMESTAMP (temp_timestamp)作为默认值。
2)查询如下所示:
$_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”。
环境:
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有不同的价值?
发布于 2020-01-10 04:42:47
为什么CURRENT_DATE和CURRENT_TIMESTAMP有不同的价值?
它们返回具有不同数据类型的值。
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()返回其执行的确切时间。
https://dba.stackexchange.com/questions/257070
复制相似问题