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

SQL中FORMAT函数转换datetime为dd-mm-yyyy格式出错的原因及解决方法

日期格式化异常问题解答

问题原因

在SQL Server的FORMAT函数中,格式符的大小写有明确区分:

  • 小写mm代表分钟(你的日期时间是00:00:00,所以取到分钟值00)
  • 大写MM才代表月份

你写的格式串'dd-mm-yyyy'误用了小写mm,因此得到错误结果25-00-2014。

解决方案

有两种可靠方式得到正确的dd-mm-yyyy格式:

方式1:修正FORMAT函数的格式串

将小写mm替换为大写MM:

DECLARE @datetime DATETIME =  '2014-08-25 00:00:00.000'
SELECT FORMAT (@datetime, 'dd-MM-yyyy')

执行后会返回预期的25-08-2014。

方式2:使用CONVERT函数(不受语言环境影响)

如果不需要自定义格式的灵活性,可直接用CONVERT函数配合固定样式码105(对应dd-mm-yyyy格式):

DECLARE @datetime DATETIME =  '2014-08-25 00:00:00.000'
SELECT CONVERT(VARCHAR(10), @datetime, 105)

该方式无需依赖系统语言,结果同样为25-08-2014。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 19:12:07