请求扩展日期查询:在现有年月查询基础上增加当前日期
补充当前日期获取的SQL查询语句
没问题!既然你已经能获取当前年份和月份,要扩展到完整日期其实很简单,不同数据库的函数略有差异,我给你整理了几种常用场景的写法:
MySQL/MariaDB
假设你原本获取年、月的语句用了CURDATE(),那直接新增CURDATE()(仅日期部分)或NOW()(带时间戳的完整日期时间)即可:SELECT YEAR(CURDATE()) AS current_year, MONTH(CURDATE()) AS current_month, CURDATE() AS current_date, -- 仅返回年-月-日格式的日期 NOW() AS current_datetime -- 返回包含时分秒的完整日期时间 FROM dual;如果你的查询是基于业务表的,去掉
FROM dual换成你的表名就行。PostgreSQL
用CURRENT_DATE获取当前日期,CURRENT_TIMESTAMP获取带时间的完整日期,配合EXTRACT获取年、月:SELECT EXTRACT(YEAR FROM CURRENT_DATE) AS current_year, EXTRACT(MONTH FROM CURRENT_DATE) AS current_month, CURRENT_DATE AS current_date, CURRENT_TIMESTAMP AS current_datetime;SQL Server
借助GETDATE()函数,通过CAST来提取纯日期部分:SELECT YEAR(GETDATE()) AS current_year, MONTH(GETDATE()) AS current_month, CAST(GETDATE() AS DATE) AS current_date, -- 仅日期 GETDATE() AS current_datetime; -- 日期+时间Oracle
使用SYSDATE作为基础,TRUNC(SYSDATE)可以去掉时间部分只保留日期:SELECT EXTRACT(YEAR FROM SYSDATE) AS current_year, EXTRACT(MONTH FROM SYSDATE) AS current_month, TRUNC(SYSDATE) AS current_date, SYSDATE AS current_datetime FROM dual;
如果需要自定义日期格式(比如YYYY/MM/DD),可以用对应数据库的格式化函数,比如MySQL的DATE_FORMAT(CURDATE(), '%Y/%m/%d')、PostgreSQL的TO_CHAR(CURRENT_DATE, 'YYYY/MM/DD'),按需调整就好。
内容的提问来源于stack exchange,提问作者shawny




