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

如何将nvarchar类型日期转为YYYY-MM-DD格式?去除T00:00

问题描述

我正在尝试将nvarchar类型的日期字段转换为日期类型,但无论使用何种方法,结果始终带有T00:00。我希望避免使用substring或trim函数,能否通过convert或cast实现?目前我尝试了以下代码:

CONVERT(VARCHAR, DATEFIELD, 120) 
CAST (DATEFIELD as DATE)

但两种方法返回的结果都包含T00:00,我想去掉这部分。我试过很多示例,但都没有效果。

解决方案

首先要理清两个核心点:

  • DATE类型本身不含时间部分:你用CAST(DATEFIELD AS DATE)得到的结果,数据存储层面只有年/月/日信息,显示出T00:00是查询工具(比如SSMS、应用程序)为兼容ISO格式自动补充的,并非数据本身携带。如果只是要确保字段类型为日期,这个转换是完全正确的,无需纠结显示后缀。
  • 如果要直接返回不带时间的字符串格式(如yyyy-mm-dd),可以通过CONVERT指定对应格式代码实现,完全不需要substring或trim:

推荐写法是先将nvarchar转成DATE类型(避免格式解析错误),再转成目标格式的字符串:

-- 输出 yyyy-mm-dd 格式的字符串
CONVERT(VARCHAR(10), CAST(DATEFIELD AS DATE), 23)

如果你的nvarchar字段本身是标准日期格式(如yyyy-mm-dd或yyyy/mm/dd),也可以直接转换:

CONVERT(VARCHAR(10), DATEFIELD, 23)

为什么之前的写法无效?

  • CONVERT(VARCHAR, DATEFIELD, 120)使用的格式代码120对应yyyy-mm-dd hh:mi:ss(24h),会强制带上时间部分(原字段无时间则补00:00:00),部分客户端会把空格替换成T,从而出现T00:00。
  • CAST(DATEFIELD AS DATE)本身没有问题,只是显示设置导致的后缀。如果用SSMS,可以通过「工具→选项→查询结果→SQL Server→结果到网格」调整「日期和时间显示格式」,改为仅显示日期。

常用日期格式代码参考:

  • 23:yyyy-mm-dd(符合ISO标准,推荐使用)
  • 101:mm/dd/yyyy
  • 102:yyyy.mm.dd

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 13:16:08