嗨我需要创建一个过程来将特定行更新为“当前年份”,无论当前年份是在执行该功能时。如果可以在不需要指定月份或日期的情况下完成,允许将多个日期更新到最近一年而不影响日期,这将是理想的。
我的搜索的大多数帖子/结果导致了解如何选择当前年份的项目,但我找不到关于设置当前年份的任何内容(无需手动输入或使用ADD DATE)。
我目前的名为tblevents
的表格如下
|EventID|StartDate |EndDate |EventFee|
|1 |2005-12-20 00:00:00|2005-12-20 00:00:00|350 |
|2 |2005-12-20 00:00:00|2005-12-20 00:00:00|320 |
|3 |2005-12-20 00:00:00|2005-12-20 00:00:00|100 |
|4 |2005-12-20 00:00:00|2005-12-20 00:00:00|200 |
|5 |2005-12-20 00:00:00|2005-12-20 00:00:00|650 |
我第一次尝试只是通过使用UPDATE执行查询来习惯它,到目前为止我已经尝试了很多变种
UPDATE `tblevents`
SET `StartDate` = '(SELECT YEAR(CURDATE()))-12-20', `EndDate` = '(SELECT
YEAR(CURDATE()))-12-20'
WHERE `EventID`=3;
并试过这个:
SELECT YEAR(CURDATE()) AS 'CYEAR';
UPDATE tblevents SET `StartDate` = 'CYEAR-12-05', `EndDate` = 'CYEAR-12-07'
WHERE `EventID`=3;
我想知道更新查询出错的地方,以及如何使用过程完成此操作。
我要么收到语法错误,要么将日期设置为0000-00-00 00:00:00
如果要将日期设置为当前年份,可以使用日期操作:
UPDATE tblevents
SET StartDate = str_to_date(concat_ws('-', year(curdate()), month(startdate), day(startdate)), '%Y-%m-%d),
endDate = str_to_date(concat_ws('-', year(curdate9)), month(enddate), day(enddate), '%Y-%m-%d')
WHERE EventID = 3;