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

SQL中使用CONVERT()函数转换日期格式无效,如何解决?

解决SQL日期格式转换无效果的问题

核心误区:日期存储和显示是两回事

SQL里的smalldatetime这类日期类型字段,是以二进制形式存储日期时间值,本身没有任何“格式”。你看到的YYYY/MM/DD是查询工具(比如SSMS)的默认显示格式,不是数据库存储的格式。


1. 查询时显示DD/MM/YYYY格式

如果只是想在查询结果里看到DD/MM/YYYY的格式,需要把日期字段转换为字符串类型,再指定格式代码:

SELECT CONVERT(varchar(10), BIRTH, 103) AS BIRTH_DDMMYYYY
FROM STAFF
WHERE ID = 'SF01'

这里varchar(10)指定字符串长度(刚好容纳DD/MM/YYYY的10个字符),格式代码103对应英式日期格式。


2. 你的UPDATE语句没效果的原因排查

你写的UPDATE语句本身逻辑是对的——把字符串'26/08/1900'按格式103解析为smalldatetime存储,但执行后没看到“效果”大概率是这几个原因:

  • 不存在ID = 'SF01'的记录,执行后影响行数为0
  • 你查看结果时直接查了原始的BIRTH字段,没转换为字符串格式,所以还是显示工具默认的YYYY/MM/DD
  • 没有UPDATE权限,语句实际没执行成功(可以看执行后的提示信息,比如“影响了0行”)

3. 让查询工具默认显示DD/MM/YYYY

如果不想每次查询都写CONVERT,可以修改客户端工具的默认显示设置:

  • 以SSMS为例:点击顶部菜单「工具」→「选项」→「环境」→「区域设置」,将日期格式改为DD/MM/YYYY
  • 或者在查询开头执行语句临时修改会话语言:
SET LANGUAGE British;
SELECT BIRTH FROM STAFF WHERE ID = 'SF01';

这样查询结果里的日期会默认显示为DD/MM/YYYY格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 12:40:42