mysql获取时间范围内随机日期

1. 需求

  • 将DATE_TEST的1140条数据的CREATE_TIME设置为2017年9月14日工作时间(早9点到晚6点)范围内随机时间
  • 在此基础上将UPDATE_TIME设置为CREATE_TIME之后的40~300秒之间的随机时间
  • 计算出UPDATE_TIME和CREATE_TIME之差,单位秒

2. 将DATE_TEST的1140条数据的CREATE_TIME设置为2017年9月14日工作时间(早9点到晚6点)范围内随机时间

SELECT CONCAT('2017-09-14 ', LPAD(FLOOR(9 + (RAND() * 9)),2,0),':',LPAD(FLOOR(0 + (RAND() * 59)),2,0),':',LPAD(FLOOR(0 + (RAND() * 59)),2,0));
UPDATE DATE_TEST SET CREATE_TIME = CONCAT('2017-09-14 ', LPAD(FLOOR(9 + (RAND() * 9)),2,0),':',LPAD(FLOOR(0 + (RAND() * 59)),2,0),':',LPAD(FLOOR(0 + (RAND() * 59)),2,0));
  • FLOOR 舍去小数部分,只返回正数部分。 ROUND小数部分四舍五入,然后返回正数部分。
  • LPAD:返回字符串str,左填充用字符串padstr填补到len字符长度。 如果str为大于len长,返回值被缩短至len个字符(即,不能超过 len 长)。 RPAD相反,是右填充字符串。

3. 将UPDATE_TIME设置为CREATE_TIME之后的40~300秒之间的随机时间

SELECT DATE_ADD('2017-09-14 12:12:33',INTERVAL LPAD(FLOOR(40 + (RAND() * 260)),3,0) second);
UPDATE DATE_TEST SET UPDATE_TIME = DATE_ADD(CREATE_TIME,INTERVAL LPAD(FLOOR(40 + (RAND() * 260)),3,0) second);

4. 计算出UPDATE_TIME和CREATE_TIME之差,单位秒

SELECT TIMESTAMPDIFF(second, '2010-04-23 17:53:38', '2010-04-23 17:53:39');
UPDATE DATE_TEST SET TIMES = TIMESTAMPDIFF(second, CREATE_TIME, UPDATE_TIME);

5. 最终整理好的数据

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容