美文网首页
mysql获取时间范围内随机日期

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

作者: 没有故事的老大爷 | 来源:发表于2018-11-19 15:11 被阅读0次

    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. 最终整理好的数据

    相关文章

      网友评论

          本文标题:mysql获取时间范围内随机日期

          本文链接:https://www.haomeiwen.com/subject/htxafqtx.html