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

如何将SQL查询结果中的日期格式转换为DD-MM-YYYY?查询未生效求助

解决SQL Server日期格式转换为DD-MM-YYYY的问题

嘿,我看你在尝试把查询结果里的日期改成DD-MM-YYYY格式,但你的CONVERT函数用法不对,这就帮你搞定~

首先得指出你原来查询里的问题:CONVERT函数的语法用反了,正确的语法应该是CONVERT(目标数据类型, 要转换的表达式, 格式样式代码),你直接把格式字符串跟在日期字段后面,SQL Server根本没法识别这个写法。

下面给你两种可行的解决方案:

方案1:用CONVERT+REPLACE(兼容所有SQL Server版本)

SQL Server里预定义了格式样式代码,其中103对应DD/MM/YYYY格式,我们可以先转成这个格式,再把斜杠替换成横杠:

SELECT 
    a.EmployeeID,
    REPLACE(CONVERT(varchar, a.BirthDate, 103), '/', '-') AS FormattedBirthDate,
    b.OrderID,
    REPLACE(CONVERT(varchar, b.OrderDate, 103), '/', '-') AS FormattedOrderDate
FROM Employees a
JOIN Orders b ON a.EmployeeID = b.EmployeeID;

这里用REPLACE把转换后的日期里的/替换成-,就能得到你想要的DD-MM-YYYY格式啦。另外建议用JOIN语法代替旧的逗号分隔表的写法,代码可读性更高。

方案2:用FORMAT函数(SQL Server 2012及以上版本适用)

如果你的SQL Server版本是2012或更新的,用FORMAT函数会更直观,直接指定你想要的格式字符串就行:

SELECT 
    a.EmployeeID,
    FORMAT(a.BirthDate, 'dd-MM-yyyy') AS FormattedBirthDate,
    b.OrderID,
    FORMAT(b.OrderDate, 'dd-MM-yyyy') AS FormattedOrderDate
FROM Employees a
JOIN Orders b ON a.EmployeeID = b.EmployeeID;

这里dd代表两位日期,MM代表两位月份,yyyy代表四位年份,完全符合你的需求,代码也更易懂。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 19:27:48