最近工作中处理表格比较多,记录一条最近在工作中发现的实用sql语句,方便后续使用。

需求

最近整理表格的时候碰到一个需求,要生成一个时间段内的随机时间。网上找到了很多教程,这里挑选一条简洁实用的。

1
2
3
4
5
6
7
8
9
10
UPDATE table_name
SET create_time = (
from_unixtime(
unix_timestamp('2010-08-08 08:00:00') + floor(
rand() * (
unix_timestamp('2021-11-15 20:00:00') - unix_timestamp('2010-08-08 08:00:00') + 1
)
)
)
)

这一条语句核心是用from_unixtimeunix_timestamprand 函数。

代码说明:

  • from_unixtime: 用来将时间戳转换成传统的日期格式。
  • unix_timestamp: 将日期转换成时间戳格式。
  • floor: 向下取整。
    • floor(6.7)就会输出整数6

实现思路:

  • 选择一个【开始时间的时间戳】,再加上【结束时间的时间戳】-【开始时间的时间戳】之间的随机数来实现。

链接

封面图来源:https://www.pixiv.net/artworks/76043793