网站转app工具,做网站技术含量,嘉兴公司网站建设,寻找扬中网站建设随便找一张有日期#xff08;字段类型为DATE#xff09;的表即可测试。 假设存在这样一张表HOLIDAY#xff0c;里面存储的是某些国家(表字段为COUNTRY_CODE)某些年的法定假日日期(表字段为HOLIDAY_DATE)。
我想查中国在2023年和2024年的法定假日日期。
BETWEEN AND
首先想… 随便找一张有日期字段类型为DATE的表即可测试。 假设存在这样一张表HOLIDAY里面存储的是某些国家(表字段为COUNTRY_CODE)某些年的法定假日日期(表字段为HOLIDAY_DATE)。
我想查中国在2023年和2024年的法定假日日期。
BETWEEN AND
首先想到的是BETWEEN AND
-- BETWEEN AND查年份不精确
SELECT * FROM HOLIDAY WHERE COUNTRY_CODE cn AND HOLIDAY_DATE BETWEEN TO_DATE(2023,yyyy) AND TO_DATE(2024,yyyy);根据查询结果来看AND TO_DATE(‘2024’,‘yyyy’)只能查到2024-01-0124年只查到一天。
而且对比数据来看如果在2024-01-15执行上述sql23年的查询记录在2023-01-15到2023-12-31之间23年的数据也会丢失一部分。
日期完整性问题
日期存储格式为20240101包含月日写查询语句也要包含月日否则可能丢失条数。
SELECT * FROM HOLIDAY WHERE COUNTRY_CODE cn AND HOLIDAY_DATE BETWEEN TO_DATE(20230101,yyyyMMdd) AND TO_DATE(20241231,yyyyMMdd);EXTRACT函数
专门用来截取年、月、日、时、分、秒的函数。
SELECT * FROM HOLIDAY WHERE COUNTRY_CODE cn AND EXTRACT(YEAR FROM HOLIDAY_DATE) IN(2023,2024);