MySQL 随机日期/时间生成

MySQL 随机日期/时间生成

  1. 生成24小时内时间:有微秒值
sql 复制代码
mysql> select sec_to_time(rand() * 86400);
+-----------------------------+
| sec_to_time(rand() * 86400) |
+-----------------------------+
| 21:56:22.705685             |
+-----------------------------+
1 row in set (0.00 sec)

2.生成一天内随机时间

sql 复制代码
mysql> select sec_to_time(floor(rand() * 86400));
+------------------------------------+
| sec_to_time(floor(rand() * 86400)) |
+------------------------------------+
| 08:44:18                           |
+------------------------------------+
1 row in set (0.00 sec)

3.生成1小时内时间:包括微秒

sql 复制代码
mysql> select sec_to_time(rand() * 3600);
+----------------------------+
| sec_to_time(rand() * 3600) |
+----------------------------+
| 00:04:40.939843            |
+----------------------------+
1 row in set (0.00 sec)

4.生成比当前时间小的90天内的随机日期:精确到天,注意负号 -90

sql 复制代码
mysql> SELECT date_add(current_date, interval rand() * -90 day) rand_date;
+------------+
| rand_date  |
+------------+
| 2023-10-14 |
+------------+
1 row in set (0.00 sec)

5.生成比当前时间大的90天内的随机日期:精确到天

sql 复制代码
mysql> SELECT date_add(current_date, interval rand() * 90 day) rand_date;
+------------+
| rand_date  |
+------------+
| 2023-12-03 |
+------------+
1 row in set (0.00 sec)

6.生成比当前时间小的90天内的随机时间:显示到秒实际精确到天

sql 复制代码
mysql> SELECT date_add(NOW(), interval rand() * -90 day) rand_date;
+---------------------+
| rand_date           |
+---------------------+
| 2023-10-07 11:06:14 |
+---------------------+
1 row in set (0.00 sec)

7.生成比当前时间小的90天内的随机时间:精确到微秒 90*24*3600 = 7776000 ,90天的总秒数。

sql 复制代码
mysql> SELECT date_add(current_timestamp, interval rand() * -7776000 second);
+----------------------------------------------------------------+
| date_add(current_timestamp, interval rand() * -7776000 second) |
+----------------------------------------------------------------+
| 2023-10-27 23:40:25.021294                                     |
+----------------------------------------------------------------+
1 row in set (0.00 sec)

8.生成比当前时间小的90天内的随机时间:精确到秒,格式化

sql 复制代码
mysql> SELECT DATE_FORMAT(date_add(current_timestamp, interval rand() * -7776000 second),'%Y-%m-%d %H:%i:%s');
+-------------------------------------------------------------------------------------------------+
| DATE_FORMAT(date_add(current_timestamp, interval rand() * -7776000 second),'%Y-%m-%d %H:%i:%s') |
+-------------------------------------------------------------------------------------------------+
| 2023-09-17 12:52:17                                                                             |
+-------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

--方法2:
select concat(date_add(current_date(),interval rand()*-90 day),' ',sec_to_time(floor(rand()*86400)))

总结:是用date_add()或者date_sub()方法,结合rand()方法进行随机谁的取值,从而实现随机取时间

参考:

1、https://blog.csdn.net/qq_39065491/article/details/134328488

相关推荐
爱吃奥利奥_wen10 分钟前
SQL Server 基础语法详解:从建库建表到约束与增删改查
服务器·数据库·oracle
这个DBA有点耶1 小时前
MySQL 8.0不可见索引:删索引怕出事,不删又拖慢写入——中间态怎么用?
数据库·mysql·代码规范
测试界的小码农2 小时前
【图数据库实战进阶(01):从零认识 Neo4j,搭建第一个图数据库项目】
数据库·neo4j
x_SpiderMan3 小时前
搭建Oracle RAC 集群
数据库·oracle
测试界的小码农3 小时前
【图数据库实战进阶(03):Neo4j 图数据建模实战——节点、关系与属性应该怎么设计?】
数据库·oracle·neo4j
瑞克-桑切斯3 小时前
redis
数据库·redis·缓存
噜哥带你玩转 AI 大模型4 小时前
面试加分项!CASE WHEN 两种写法、CTE 公共表表达式、四大类窗口函数,老哥一次讲透
mysql·窗口函数·cte·sql 进阶
freejackman4 小时前
【工程化】从“单兵作战”到“多引擎架构”:基于门面模式的重构实战
大数据·数据库·hive·sql·测试工具·设计模式·架构
bksczm4 小时前
InnoDB 内存结构总览:Change Buffer、AHI 与 Log Buffer
数据库·mysql
招风的黑耳4 小时前
SpringBoot+Vue+MySQL 民宿在线预定平台 完整可运行版(源码+文档)
vue.js·spring boot·mysql