【发布时间】:2020-06-08 18:36:37
【问题描述】:
我正在实现一个聚合统计表,该表将包含存储在另一个表中的每分钟实时数据聚合。为了实现这一点,我相信我需要一种方法来从datetime 获取一分钟的开始。
例如如果 datetime 是 dt='2020-06-08 21:20:33' ,我需要一个函数 F(dt)='2020-06-08 21:20:00',这样我就可以在查询中在 NOW() 上调用它。
到目前为止,由于 datetime-string-datetime 路由,我可以想到以下可能会很慢:
SELECT STR_TO_DATE(DATE_FORMAT(NOW(), '%Y%m%d%H%i00'), '%Y%m%d%H%i%S') AS MinuteBeginning
您能否提供一个更有效的解决方案,也许是一个存储过程?如果 MySQL 解决方案与 MariaDB 不同,则首选后者。
【问题讨论】:
-
从时间戳中减去秒数,在标准 SQL
current_timestamp - (extract(second from current_timestamp) * interval '1' second) -
@dnoeth,如果时间戳有微秒,这似乎是错误的,不是吗?
-
在标准 SQL 中,它按预期工作,提取包含亚秒部分,因此提取(从时间 '12:34:56.7687' 开始的第二个)结果为 56.7687
标签: mysql sql performance datetime mariadb