我的格式"26052016"
格式为DDMMYYYY
我想将此日期转换为"YYYYMMDD"
格式。
任何想法
我试过这个方法
select CONVERT(varchar(8),[doc-date],112) FROM C034_PDK_ParallelBillingSourceExtract
但是这给了我相同的日期。
请帮帮我
答案 0 :(得分:1)
有不同的方法可以做到这一点。
最好的方法是使用SELECT
vsa.displayname NameofLiaisonOfficer,
vsa.EmailAddress LOEmail,
'(65)' +' '+ convert(varchar, vsa.MainOfficeTelNo ) as LOContactNo,
vsa.MainOfficeTelNo GeneralOfficeConatctNo
FROM ApplicationProjectLo ap
INNER JOIN V_SIP_ALLSTAFF vsa ON ap.StaffEmailId = vsa.LOGINID
WHERE ap.Type IN ('L','A')
ORDER BY ap.Type desc
方法,因为您知道字符位置将保持不变。
例如
假设您的日期为 - substring
使用31122015
方法选择日期部分并将它们连接起来
substring
结果将是 - select SUBSTRING('31122015',5,4) + SUBSTRING('31122015',3,2) + SUBSTRING('31122015',1,2)
答案 1 :(得分:1)
SELECT CONVERT(VARCHAR(8), doc-date, 112) AS [YYYYMMDD] from
C034_PDK_ParallelBillingSourceExtract
检查......这应该可以正常工作。
由于
答案 2 :(得分:1)
SELECT CONVERT(VARCHAR(8), '26052016', 112) AS [YYYYMMDD] from
C034_PDK_ParallelBillingSourceExtract
答案 3 :(得分:1)
试试这个,
SELECT substring([doc-date], 5, 4) + substring([doc-date], 3, 2) + substring([doc-date], 1, 2) AS [YYYYMMDD]
FROM C034_PDK_ParallelBillingSourceExtract
答案 4 :(得分:1)
我可以找到这种方式,我不知道是否存在任何其他方式..
declare @date nvarchar(max)='01052016'
select convert(varchar(8),cast(CONCAT(SUBSTRING(@date,3,2),'/',SUBSTRING(@date,1,2),'/',SUBSTRING(@date,5,4)) as date),112)as [YYYYMMDD]
清除代码:
declare @date nvarchar(max)='01052016'
declare @date1 date
set @date1 =cast(CONCAT(SUBSTRING(@date,3,2),'/',SUBSTRING(@date,1,2),'/',SUBSTRING(@date,5,4)) as date)
select convert(varchar(8),@date1,112)as [YYYYMMDD]
如果您使用Sql version< 2012
,则需要跳过CONCAT
并使用+
进行字符串连接。
答案 5 :(得分:0)
自SQL Server 2016起,我们为此提供了一些便捷的工具:
使用DATEFROMPARTS和SUBSTRING将奇数日期格式从Varchar中的任何排列转换为实际日期:
SELECT DATEFROMPARTS(SUBSTRING('31122015',5,4), SUBSTRING('31122015',3,2), SUBSTRING('31122015',1,2))
使用FORMAT将实际日期转换为YYYYMMDD:
SELECT FORMAT(MyDate, 'yyyyMMdd')
当心yyyyMMdd,这是MS SQL中唯一区分大小写的部分。小写的mm是“分钟”,大写的MM是“月”,大写的YYYY或DD都不是,只会在输出中添加字母!