如何将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
相关产品推荐
相关产品推荐

