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

SQL中如何将日期列转换为当年首日带时间的datetime格式?

如何在SQL SELECT查询中将日期转换为当年第一天的带时间格式?

当然可以实现,核心思路是先提取目标日期的年份,构造出当年的第一天日期,再格式化为包含T和00:00:00时间部分的字符串。以下是主流数据库的具体实现方式:

MySQL

可以直接拼接年份与固定的日期时间字符串,或者用日期函数确保类型安全:

-- 简单拼接方式
SELECT CONCAT(YEAR(date_column), '-01-01T00:00:00') AS year_start
FROM your_table;

-- 日期函数转换(更规范)
SELECT DATE_FORMAT(STR_TO_DATE(CONCAT(YEAR(date_column), '-01-01'), '%Y-%m-%d'), '%Y-%m-%dT%H:%i:%s') AS year_start
FROM your_table;

PostgreSQL

使用DATE_TRUNC将日期截断到年份维度,再用TO_CHAR格式化目标字符串:

SELECT TO_CHAR(DATE_TRUNC('year', date_column), 'YYYY-MM-DD"T"HH24:MI:SS') AS year_start
FROM your_table;

SQL Server

两种常用方式:用DATEFROMPARTS构造当年第一天后格式化,或者用DATEADD+DATEDIFF配合CONVERT生成ISO8601格式字符串:

-- 方式1:DATEFROMPARTS + FORMAT
SELECT FORMAT(DATEFROMPARTS(YEAR(date_column), 1, 1), 'yyyy-MM-ddTHH:mm:ss') AS year_start
FROM your_table;

-- 方式2:DATEADD + DATEDIFF + CONVERT(性能更优)
SELECT CONVERT(VARCHAR(19), DATEADD(YEAR, DATEDIFF(YEAR, 0, date_column), 0), 126) AS year_start
FROM your_table;

Oracle

通过TRUNC截断日期到年份,再用TO_CHAR指定输出格式:

SELECT TO_CHAR(TRUNC(date_column, 'YYYY'), 'YYYY-MM-DD"T"HH24:MI:SS') AS year_start
FROM your_table;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 12:15:34