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

如何在TSQL中将YYYY/MM/DD格式字符串转为当年1月1日?

解决方法

你的错误核心是SQL里字符串常量要用单引号,双引号会被解析成列名,所以"01"被当成了不存在的列,才会报错。针对你的需求,给你几种可行的写法:

方法1:利用日期函数提取年份后拼接

先把varchar转成datetime类型提取年份,再拼接成当年1月1日的日期字符串,最后转回日期类型:

SELECT CAST(CONCAT(YEAR(CONVERT(datetime, empDate, 111)), '/01/01') AS DATE) FROM empTable;

如果需要返回的是YYYY/MM/DD格式的字符串而非日期类型,去掉CAST(...) AS DATE即可:

SELECT CONCAT(YEAR(CONVERT(datetime, empDate, 111)), '/01/01') FROM empTable;

方法2:直接截取原字符串(更高效)

因为你的原列是固定的YYYY/MM/DD格式,直接截取前4位年份,拼接/01/01就行,不用转日期,性能更好:

-- 返回日期类型
SELECT CAST(LEFT(empDate, 4) + '/01/01' AS DATE) FROM empTable;

-- 返回字符串格式
SELECT LEFT(empDate, 4) + '/01/01' FROM empTable;

补充说明

  • 所有SQL方言里,字符串常量都应该用单引号',双引号"默认用于引用标识符(比如列名、表名),这是你之前报错的根本原因。
  • 如果是MySQL环境,语法略有不同,把CONVERT(datetime, empDate, 111)换成STR_TO_DATE(empDate, '%Y/%m/%d')即可,核心逻辑保持一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 11:13:10