SQL Server存储过程中如何转换yyyy-mm-dd hh:mm:ss.sss为ddmmyy及dd-Mon-yy格式?
在SQL Server存储过程中转换日期格式的解决方案
别发愁啦,这两种日期格式转换在SQL Server里都能轻松搞定,我给你整理了两种适配不同版本的实现方法,你可以按需选用:
1. 转换为ddmmyy格式
这里分两种情况,取决于你的SQL Server版本:
方法一:用FORMAT函数(SQL Server 2012及以上版本适用)
这个方法最直观,直接指定格式字符串即可:
DECLARE @InputDate DATETIME = '2018-04-27 15:30:45.123'; SELECT FORMAT(@InputDate, 'ddMMyy') AS ConvertedDate; -- 输出结果:270418
方法二:用CONVERT+字符串截取(兼容所有SQL Server版本)
如果你的版本比较老,没法用FORMAT,可以用CONVERT先转成标准格式,再截取需要的部分:
DECLARE @InputDate DATETIME = '2018-04-27 15:30:45.123'; SELECT RIGHT(CONVERT(VARCHAR(8), @InputDate, 112), 6) AS ConvertedDate; -- 说明:CONVERT(...,112)会得到yyyymmdd格式的字符串,RIGHT取后6位就是ddmmyy -- 输出结果:270418
2. 转换为dd-Mon-yy格式(比如27-Apr-18)
同样提供两种方法:
方法一:用FORMAT函数(SQL Server 2012及以上版本适用)
直接指定带横杠的月份缩写格式:
DECLARE @InputDate DATETIME = '2018-04-27 15:30:45.123'; SELECT FORMAT(@InputDate, 'dd-MMM-yy') AS ConvertedDate; -- 输出结果:27-Apr-18(注意:月份缩写会受SQL Server的语言设置影响,确保语言为英文即可)
方法二:用CONVERT+REPLACE(兼容所有SQL Server版本)
先通过CONVERT得到dd Mon yy格式,再把空格替换成横杠:
DECLARE @InputDate DATETIME = '2018-04-27 15:30:45.123'; SELECT REPLACE(CONVERT(VARCHAR(11), @InputDate, 106), ' ', '-') AS ConvertedDate; -- 说明:CONVERT(...,106)会得到dd Mon yy格式(比如27 Apr 18),REPLACE把空格换成-就得到目标格式 -- 输出结果:27-Apr-18
你只需要把上面示例里的@InputDate换成你存储过程中的日期字段或变量就行啦!
内容的提问来源于stack exchange,提问作者Manu C Rajan
相关产品推荐
相关产品推荐

