mysql - Mysql 不会创建结束日期在 2038-01-19 之后的 EVENT
问题描述
我试图在 mysql 中创建一个事件,并且似乎如果结束日期超过 20 年,它就无法创建它。
从今天开始,明天完成作品:
mysql> CREATE EVENT test
-> ON SCHEDULE EVERY 1 DAY
-> STARTS '2020-07-24 13:30:00'
-> ENDS '2020-07-25 13:30:00'
-> DO
-> SELECT 1 FROM DUAL;
Query OK, 0 rows affected (0.00 sec)
从今天开始在 50 年后结束,不起作用:
mysql> CREATE EVENT test
-> ON SCHEDULE EVERY 1 DAY
-> STARTS '2020-07-24 13:30:00'
-> ENDS '2070-07-25 13:30:00'
-> DO
-> SELECT 1 FROM DUAL;
ERROR 1543 (HY000): ENDS is either invalid or before STARTS
mysql> -- also with different time format
mysql> CREATE EVENT test
-> ON SCHEDULE EVERY 1 DAY
-> STARTS '2020-07-24 13:30:00'
-> ENDS CURRENT_TIMESTAMP + INTERVAL 50 YEAR
-> DO
-> SELECT 1 FROM DUAL;
ERROR 1543 (HY000): ENDS is either invalid or before STARTS
在 20 年内都不起作用:
mysql> CREATE EVENT test
-> ON SCHEDULE EVERY 1 DAY
-> STARTS '2020-07-24 13:30:00'
-> ENDS '2040-07-25 13:30:00'
-> DO
-> SELECT 1 FROM DUAL;
ERROR 1543 (HY000): ENDS is either invalid or before STARTS
mysql> CREATE EVENT test
-> ON SCHEDULE EVERY 1 DAY
-> STARTS '2020-07-24 13:30:00'
-> ENDS CURRENT_TIMESTAMP + INTERVAL 20 YEAR
-> DO
-> SELECT 1 FROM DUAL;
ERROR 1543 (HY000): ENDS is either invalid or before STARTS
15年是可以接受的:
mysql> CREATE EVENT test
-> ON SCHEDULE EVERY 1 DAY
-> STARTS '2020-07-24 13:30:00'
-> ENDS CURRENT_TIMESTAMP + INTERVAL 15 YEAR
-> DO
-> SELECT 1 FROM DUAL;
Query OK, 0 rows affected (0.01 sec)
有谁知道为什么会这样?
解决方案
MySQL 事件时间戳使用 32 位 UNIX 时间戳格式。
https://dev.mysql.com/doc/refman/8.0/en/datetime.html说:
TIMESTAMP 数据类型用于同时包含日期和时间部分的值。TIMESTAMP 的范围为 '1970-01-01 00:00:01' UTC 到 '2038-01-19 03:14:07' UTC。
此错误中也确定了此限制:https ://bugs.mysql.com/bug.php?id=16396
推荐阅读
- regex - 正则表达式删除两个标签之间的字符串的一部分
- android - Whatsapp 在 android 中共享音频文件时正在剪切音频文件
- render - A 帧渲染 lop 和视图刷新
- java - Groovy Shell 脚本对象未完全执行
- java - 从表 1 中获取用户列表,然后与表 2 中的数据进行比较
- angular - RXJS - 3 个并行的 observables,然后发出值并使用它来调用 3 个串联的 observables
- javascript - 如何访问 jquery 中的 css * 选择器?
- asp.net - 简单电子邮件服务中的 Web API 和电子邮件配置
- mysql - 无法从 cronjob 运行 smbclient 进行远程文件共享
- clickhouse - clickhouse分布式查询实现需要步骤