将Varchar日期转换为Date数据类型

时间:2018-12-09 04:51:37

标签: sql-server tsql

我在SQL Server中有一列存储日期的数据类型为varchar。日期格式为Mon-01-Oct,表示Monday, 1st, October

我想在将数据插入到另一个表中时将其转换为日期格式为dd-mm-yy(此处为01-10-2018)。

我该怎么做?

2 个答案:

答案 0 :(得分:2)

假设年份应始终为当前年份,这是一种实现方法:

DECLARE @StringDate char(10) = 'Mon-01-Oct'

SELECT CONVERT(Date, 
               REPLACE(RIGHT(@StringDate, 6), '-', ' ') +' '+ 
               CONVERT(char(4), GETDATE(), 120),
               106) As DateValue

结果:

2018-10-01

答案 1 :(得分:0)

我认为您可以使用这样的查询:

-- `monthes` is a raw data you need to do your convertion
;with monthes as (
    select '10' mn, 'Oct' md
    union all select '11', 'Nov'
    union all select '12', 'Dec'
    union all select '01', 'Jan'
    union all select '02', 'Feb'
    union all select '03', 'Mar'
    union all select '04', 'Apr'
    union all select '05', 'May'
    union all select '06', 'Jun'
    union all select '07', 'Jul'
    union all select '08', 'Aug'
    union all select '09', 'Sep'
)
select parsename(replace(t.dateColumn, '-', '.'), 2) + '-' + m.mn + '-2018' dateString
from yourTable t
left join monthes m 
  on m.md= parsename(replace(t.dateColumn, '-', '.'), 1);