我正在从Oracle的to_date
函数迁移到SQL Server的convert
函数。
我想知道将格式字符串yyyyMMddHHmmss
转换为DateTime
类型的好方法。
我可以写一个程序,但它太冗余了,所以我想知道如何改进它。
'Get String Date (yyyyMMddHHmmss)
Dim strNowDate = Strings.Format(Now, "yyyyMMddHHmmss") 'format cannot be changed. (Because, referenced from many)
'some logics...
'Oracle script before migration.
sqlBuf.Append(" ,to_date('" & strNowDate & "', 'YYYYMMDDHH24MISS')" & vbCrLf)
'SQL Server script after migration.(too redundancy... I want to make it more cool.)
sqlBuf.Append(" ,convert(DATETIME, '" & DateTime.ParseExact(strNowDate, "yyyyMMddHHmmss", Globalization.DateTimeFormatInfo.InvariantInfo).ToString("yyyy-MM-dd HH:mm:ss") & "')" & vbCrLf)
答案 0 :(得分:2)
ORACLE和SQL Server都不同,我假设它的SQL Server。 试试这个
select
convert(datetime,stuff(stuff(stuff('20171116115733', 9, 0, ' '), 12, 0, ':'),
15, 0, ':')) ConvertedDate
这里有很多可能的方法
答案 1 :(得分:1)
这是我的评论中的变体
SELECT CONVERT(datetime,STUFF(STUFF(STUFF(STUFF(STUFF('20171116115733',5,0,'-'),8,0,'-'),11,0,' '),14,0,':'),17,0,':'),120) -- yyyy-mm-dd hh:mm:ss