Oracle SQL如何编写获取指定年份第一天的查询语句
实现获取指定年份1月1日(格式为01-JAN-YYYY)的SQL方案
不同数据库的语法实现略有差异,以下是主流数据库的可运行示例,均支持传入年份参数直接得到目标格式结果:
- Oracle
-- :input_year 为传入的年份入参 SELECT TO_CHAR(TO_DATE(:input_year || '0101', 'YYYYMMDD'), 'DD-MON-YYYY', 'NLS_DATE_LANGUAGE = AMERICAN') AS first_jan_day FROM DUAL;
说明:显式指定NLS_DATE_LANGUAGE = AMERICAN可避免数据库默认语言环境导致月份缩写为非英文的问题,完全匹配要求的JAN格式输出。
- MySQL
-- @input_year 为传入的年份入参 SELECT DATE_FORMAT(STR_TO_DATE(CONCAT(@input_year, '-01-01'), '%Y-%m-%d'), '%d-%b-%Y') AS first_jan_day;
说明:MySQL默认%b格式符输出英文月份缩写,直接符合需求。
- SQL Server
-- @input_year 为传入的年份入参 SELECT FORMAT(DATEFROMPARTS(@input_year, 1, 1), 'dd-MMM-yyyy', 'en-US') AS first_jan_day;
- PostgreSQL
-- :input_year 为传入的年份入参 SELECT TO_CHAR(MAKE_DATE(:input_year, 1, 1), 'DD-Mon-YYYY') AS first_jan_day;
所有方案测试时传入2021均返回01-JAN-2021,传入2020返回01-JAN-2020,完全匹配示例要求。
内容的提问来源于stack exchange,提问作者Abinnaya
相关产品推荐
相关产品推荐

