MYSQL UNIX_TIMESTAMP('02/05/2019') 是非确定性的吗?

问题描述 投票:0回答:1

根据此处给出的定义:https://dev.mysql.com/doc/refman/5.7/en/create-table- generated-columns.html

如果给定表中相同的数据,多次调用会产生相同的结果,而与连接的用户无关,则函数是确定性的。

据我了解,unix_timestamp() 对于相同的输入总是给出相同的结果。

但是,当我尝试使用 UNIX_TIMESTAMP(epochtime) 创建生成列时,它会给出一个错误,因为函数不允许。

ALTER TABLE `test_table` 
ADD COLUMN epoch_updated_at BIGINT(15)
AS  (UNIX_TIMESTAMP(updated_at)) STORED

更新:我发现 MYSQL 确实将 unix_timestamp 视为不确定性,位于 https://dev.mysql.com/doc/refman/8.0/en/replication-rbr-safe-unsafe.html#replication-rbr-safe-不安全-不。我不确定,为什么?

mysql unix-timestamp deterministic
1个回答
0
投票

unix_timestamp 参数是 date 类型,其值受会话时区影响。如果要创建一个生成列来表示纪元秒,可以使用以下语句:

ALTER TABLE `test_table` 
  ADD COLUMN epoch_updated_at BIGINT(15)
  AS (TIMESTAMPDIFF(SECOND, from_unixtime(0), updated_at))
© www.soinside.com 2019 - 2024. All rights reserved.