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

SQL Server Express中将datetime2(7)列转换为date类型的语法问题

错误原因说明

你之前的两段写法都存在语法/逻辑错误:

  • 第一段代码仅将当前系统时间转换为datetime2(7)格式,完全未关联目标表的annexDate列
  • 第二段代码CONVERT函数的括号、参数顺序完全错误,且目标转换类型写反

正确写法

分两种使用场景选择即可:

1. 仅查询时临时转换格式,不修改原表存储结构

USE bigCity
GO

-- 写法1:使用CONVERT函数
SELECT CONVERT(date, annexDate) AS annexDate 
FROM dbo.stateByStatehood;

-- 写法2:使用更简洁的CAST函数,效果完全一致
SELECT CAST(annexDate AS date) AS annexDate 
FROM dbo.stateByStatehood;

如果需要指定日期输出的字符串样式,可以在CONVERT函数第三个参数加样式码,比如输出yyyy-MM-dd格式的字符串可以用CONVERT(varchar(10), annexDate, 23)。


2. 永久修改表结构,将该列的存储类型直接改为date

操作前建议先备份表数据,避免异常丢失数据:

USE bigCity
GO

-- 若该列存在索引、非空约束或其他绑定规则,需先删除对应约束再执行修改
ALTER TABLE dbo.stateByStatehood 
ALTER COLUMN annexDate date [NULL/NOT NULL];

替换语句中的[NULL/NOT NULL]为你需要的非空属性即可,修改后该列会自动丢弃原datetime2(7)类型的时分秒、精度部分,仅保留日期值。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 11:06:03