我在SQL Server中有一列存储日期的数据类型为varchar
。日期格式为Mon-01-Oct
,表示Monday, 1st, October
。
我想在将数据插入到另一个表中时将其转换为日期格式为dd-mm-yy
(此处为01-10-2018
)。
我该怎么做?
答案 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);