MySQL工作笔记-检索出某一时间段中的数据,并更新
目录
概念
这里我就直接举一个栗子,如何用update和select把学生表中,距离现在到入学时期4年后的学生,标记为已毕业
也就是:现在 - 入学 > 4年 标记为毕业!
这里有2个知识点:
Mysql中有一个NOW()的函数是获取当前时间,也有一个datetime这个数据类型,这两个可以直接相减;
UNIX_TIMESTAMP这个函数可以直接把datetime换成时间戳;
这里还有一个知识点:
不能select某表的数据再update,这是不允许的,这里可以再套一个select 再取个别名,即可,下面演示将会给出
演示
表结构如下:
表内容如下:
现在是2019年4月18日 15:21:58;把 现在 - joinData > 4年的pastDue设置为1;
SQL如下:
UPDATE demo SET demo.pastDue=1 WHERE demo.id IN(SELECT tempDemo.id FROM(SELECT * FROM demo WHERE UNIX_TIMESTAMP(NOW())- UNIX_TIMESTAMP(joinData) > 31536000 * 4) AS tempDemo)
运行截图如下:
这里我把时间改成2025年:
再运行下:
Mysql还是很强大的哈