特定日期的SQL更新

时间:2016-05-31 06:33:53

标签: mysql sql sql-update

您好,我有这张表

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设置为是的(1)。 我真的不知道,怎么做。有什么想法吗?

2 个答案:

答案 0 :(得分: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'

答案 1 :(得分:1)

要提取星期几,您可以使用WEEKDAY()DAYOFWEEK(),它们之间的区别在于DAYOFWEEK()星期日是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