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

相关推荐
A.说学逗唱的Coke24 分钟前
【大模型专题】向量数据库深度解析:从原理到实战,构建企业级 AI 知识检索底座
数据库·人工智能
果丁智能36 分钟前
智能锁赋能网约房民宿数字化管控:身份核验+远程授权,筑牢安全防线、降本增效
网络·数据库·人工智能·安全·智能家居
无敌的牛1 小时前
redis学习过程
数据库·redis·学习
IT北辰1 小时前
神通数据库管理系统V7.0.251210 for Windows(x86 64bit)安装部署
数据库·神通
北顾笙9802 小时前
MySQL-day2
数据库·mysql
Demons_kirit2 小时前
新项目如何连接上自己本地的数据库
数据库
洪晓露3 小时前
将 rke2 集群证书延长至 10 年
运维·服务器·数据库
程序猿乐锅3 小时前
【MySQL | 第八篇】MySQL 视图
数据库·mysql
jieyucx4 小时前
SQL 查询终极高阶通鉴:从零基础拆解到工业级多表联查、窗口函数与索引优化
数据库·sql
ai_coder_ai5 小时前
论 NoSQL 数据库技术及其应用
数据库·nosql