繁体   English   中英

一周中特定日期的 SQL 更新

[英]SQL update in specific day of week

你好,我有这张桌子

TABLE `record` (
   `zpravaID` int(11) NOT NULL AUTO_INCREMENT,
   `sensorID` int(11) NOT NULL,
   `date_time` datetime NOT NULL,
   `cena` double DEFAULT NULL,
   `is_cheap` tinyint(1) NOT NULL DEFAULT '0',
   PRIMARY KEY (`zpravaID`), ...)

我想做一个更新,例如将获取 2016 年的所有记录和每条记录,这将在星期一从 14:00:00 到 14:45:00 将is_cheap设置为 true (1)。 我真的不知道该怎么做。 有任何想法吗?

尝试这个:

update record
set is_cheap = 1
where YEAR(date_time) = 2016  
and DAYNAME(date_time) = 'Monday'
and DATE_FORMAT(date_time,'%H:%i:%s') BETWEEN '14:00:00' AND '14:45:00'

要提取星期几,您可以使用WEEKDAY()DAYOFWEEK() ,它们之间的区别在于DAYOFWEEK() sunday 是1 您可以使用DATE_FORMAT仅提取时间值,并使用YEAR()提取日期的年份:

UPDATE `record` t
SET t.is_cheap = 1
WHERE DAYOFWEEK(t.date_time) = 2 
      AND DATE_FORMAT(t.date_time,'%H:%i:%s') BETWEEN '14:00:00' AND '14:45:00'
      AND YEAR(t.date_time) = 2016

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM