当WHERE条件含日期类型时,如何编写SQL数据更新语句?
处理UPDATE语句中日期类型字段的WHERE条件
不同数据库对日期格式的处理略有差异,以下是几种常用数据库的写法示例:
MySQL/MariaDB
直接使用标准YYYY-MM-DD格式字符串匹配,或者用STR_TO_DATE转换非标准格式:
-- 标准日期格式匹配 UPDATE blse SET employment = 2066.3 WHERE date = '2023-10-01' AND industry = 'Total Nonfarm' AND state = 'Alabama'; -- 非标准格式转换(例如MM/DD/YYYY) UPDATE blse SET employment = 2066.3 WHERE date = STR_TO_DATE('10/01/2023', '%m/%d/%Y') AND industry = 'Total Nonfarm' AND state = 'Alabama';
PostgreSQL
支持标准日期字符串,或用TO_DATE转换非标准格式:
-- 标准日期格式匹配 UPDATE blse SET employment = 2066.3 WHERE date = '2023-10-01' AND industry = 'Total Nonfarm' AND state = 'Alabama'; -- 非标准格式转换 UPDATE blse SET employment = 2066.3 WHERE date = TO_DATE('10/01/2023', 'MM/DD/YYYY') AND industry = 'Total Nonfarm' AND state = 'Alabama';
SQL Server
使用标准日期字符串,或用CONVERT函数转换格式:
-- 标准日期格式匹配 UPDATE blse SET employment = 2066.3 WHERE date = '2023-10-01' AND industry = 'Total Nonfarm' AND state = 'Alabama'; -- 非标准格式转换(101对应MM/DD/YYYY格式) UPDATE blse SET employment = 2066.3 WHERE date = CONVERT(DATE, '10/01/2023', 101) AND industry = 'Total Nonfarm' AND state = 'Alabama';
额外技巧
如果只需匹配年份、月份等部分日期信息,可以用数据库内置的日期提取函数:
-- MySQL示例:匹配2023年10月的数据 UPDATE blse SET employment = 2066.3 WHERE YEAR(date) = 2023 AND MONTH(date) = 10 AND industry = 'Total Nonfarm' AND state = 'Alabama';
内容的提问来源于stack exchange,提问作者RAKANiD6
相关产品推荐
相关产品推荐

