You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过单条查询(无需存储过程)计算当年首日至今日的天数?

实现当年第一天到今日的天数计算(无需存储过程)

完全可以通过单条查询实现,针对不同主流数据库的写法如下:

MySQL/MariaDB

使用DATEDIFF函数计算日期差,结合DATE_FORMAT生成当年第一天:

SELECT DATEDIFF(CURDATE(), DATE_FORMAT(CURDATE(), '%Y-01-01')) + 1 AS days_from_year_start;
  • 说明:CURDATE()获取当前日期,DATE_FORMAT(CURDATE(), '%Y-01-01')得到当年1月1日,DATEDIFF返回结束日与开始日的天数差,加1是为了包含第一天(比如1月1日当天算1天)。

SQL Server

用DATEFROMPARTS构造当年第一天,配合DATEDIFF计算天数:

SELECT DATEDIFF(DAY, DATEFROMPARTS(YEAR(GETDATE()), 1, 1), GETDATE()) + 1 AS days_from_year_start;
  • 说明:GETDATE()获取当前日期,DATEFROMPARTS(YEAR(GETDATE()),1,1)生成当年1月1日,DATEDIFF(DAY, ...)得到天数差,加1后得到包含首尾的总天数。

Oracle

通过TRUNC函数截断日期到年份起点,直接计算日期差:

SELECT TRUNC(SYSDATE) - TRUNC(SYSDATE, 'YYYY') + 1 AS days_from_year_start FROM DUAL;
  • 说明:TRUNC(SYSDATE, 'YYYY')得到当年1月1日,Oracle中日期直接相减会返回天数差,加1后得到包含当天的总天数。

PostgreSQL

使用DATE_TRUNC获取当年第一天,再与当前日期相减:

SELECT (CURRENT_DATE - DATE_TRUNC('year', CURRENT_DATE)::DATE) + 1 AS days_from_year_start;
  • 说明:DATE_TRUNC('year', CURRENT_DATE)生成当年1月1日的时间戳,转成日期后和CURRENT_DATE相减得到天数差,加1后得到总天数。

示例验证

以2023年7月24日为例,执行上述任意查询都会返回204,与你给出的结果一致。

内容的提问来源于stack exchange,提问作者Henry Olive

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 05:15:59