使用SQL Server将字符串(yyyyMMddHHmmss)转换为DateTime

时间:2017-11-16 05:54:13

标签: .net sql-server vb.net oracle

我正在从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)

2 个答案:

答案 0 :(得分:2)

ORACLE和SQL Server都不同,我假设它的SQL Server。 试试这个

select
convert(datetime,stuff(stuff(stuff('20171116115733', 9, 0, ' '), 12, 0, ':'),
        15, 0, ':')) ConvertedDate

这里有很多可能的方法

https://rdineshkumar.wordpress.com/tag/how-to-convert-yyyymmddhhmmss-to-datetimedatetime-in-sql-server/

答案 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