ATE_ADD 函数可以这样用吗? 带上where条件,更新字段

ImFantasy 2010-05-04 03:49:23
UPDATE products_keys SET expireday= DATE_ADD(expireday,INTERVAL 365 DAY) WHERE expireday =1309449600; 



我现在想将一个products_keys表里面的expireday 字段 值是1309449600 统统加多一年.

这个表现在又35万条记录左右. 这样执行应该没什么问题吧.
expireday字段是有索引的.
...全文
81 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
yumenfeiyu945 2010-05-04
  • 打赏
  • 举报
回复
你的加一年,要全部按365天算就可以直接加上365天对应的秒数,如果还要考虑闰年366天,expireday换算成date后再通过date_add()增加一年
ACMAIN_CHM 2010-05-04
  • 打赏
  • 举报
回复
#3 楼 这个方法最简单。不过365天 = 31536000

UPDATE products_keys SET expireday=expireday+31536000 WHERE expireday =1309449600;

如果速度想再快一点儿:
UPDATE products_keys SET expireday=1340985600 WHERE expireday =1309449600;

另外在expireday 加索引。
WWWWA 2010-05-04
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 imfantasy 的回复:]
是int(10)类型的 存储的时间戳.
SQL code

UPDATE products_keys SET expireday=expireday+31556926 WHERE expireday =1309449600;



这条sql语句貌似应该行吧.
[/Quote]
用from_unixtime unix_timestamp 转换一下
update products_keys SET expireday=unix_timestamp(date_add(from_unixtime(expireday), interval 365 day)) WHERE expireday =1309449600;
vipper23 2010-05-04
  • 打赏
  • 举报
回复
update products_keys SET expireday=unix_timestamp(date_add(from_unixtime(expireday), interval 365 day))  WHERE expireday =1309449600;
vipper23 2010-05-04
  • 打赏
  • 举报
回复
update products_keys SET expireday=date_add(from_unixtime(expireday), interval 365 day)  WHERE expireday =1309449600;
ImFantasy 2010-05-04
  • 打赏
  • 举报
回复
是int(10)类型的 存储的时间戳.

UPDATE products_keys SET expireday=expireday+31556926 WHERE expireday =1309449600;


这条sql语句貌似应该行吧.

yumenfeiyu945 2010-05-04
  • 打赏
  • 举报
回复
expireday字段类型是什么?不是日期类型,这样肯定不行的
WWWWA 2010-05-04
  • 打赏
  • 举报
回复
expireday什么类型

56,677

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧