【问题标题】:MYSQL - how do i fill a row with random dates?MYSQL - 我如何用随机日期填充一行?
【发布时间】:2014-09-15 23:09:27
【问题描述】:

我必须更新一个名为“patron_filtrado”的表并填写一个名为“fecha_nacimiento”类型日期的列。对于随机日期,日期将在 1920 年到 1980 年之间。

我想过这样的事情

Update patron_filtrado
  SET fecha_nacimiento= DateAdd(d, ROUND(DateDiff(d, '1920-01-01', '2080-12-31') * RAND(CHECKSUM(NEWID())), 0),
  DATEADD(second,CHECKSUM(NEWID())%48000, '1920-01-01'))

我还好吗?

【问题讨论】:

  • 您能指定您使用的数据库和版本吗?甲骨文?微软 SQL? MySQL?

标签: mysql sql date


【解决方案1】:

修改自:How to update rows with a random date

NEWID 比尝试使用 RAND 更好:RAND 不会在单个 SELECT 或 UPDATE 中生成不同的值行(在 SQL 2000 中没有,以防行为发生变化)。

试试

SELECT DATEADD(DAY, ABS(CHECKSUM(NEWID()) % 22265), '1920-01-01')
FROM your_table

这会生成从 1920-01-01 到 1980-12-31 的日期。

如果你想更新,那么

UPDATE your_table
SET your_date_field = DATEADD(DAY, ABS(CHECKSUM(NEWID()) % 22265), '1920-01-01')
WHERE your_conditions

【讨论】:

  • 它说“错误代码:1064。您的 SQL 语法有错误;请查看与您的 MySQL 服务器版本相对应的手册,以获取在 '(NEWID()) % 附近使用的正确语法22265), '1920-01-01')' 在第 1 行"
  • 第 1 行 = 更新 your_table?您是否将其更新为正确的更新赞助人_filtrado?修改上述语句以适合您的 MySQL 版本和语法。
  • 更新 padron_filtrado SET fecha_nacimiento = DATEADD(DAY, ABS(CHECKSUM(NEWID()) % 22265), '1920-01-01');我试过这个
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-19
  • 1970-01-01
  • 1970-01-01
  • 2017-03-12
  • 1970-01-01
相关资源
最近更新 更多