将字符串日期转换为3个字符的月份

时间:2019-05-10 17:52:35

标签: c# sql datetime varchar

我在数据库中有一个带日期的varchar列。在C#中,使用SQL Select,我试图将字符串(例如:“ Apr-10-2009”)(MMM-dd-yyyy)转换为日期时间,但给出:

  

将varchar数据类型转换为日期时间数据类型会导致值超出范围。

我意识到这必须是3个字符的月份,但是不确定我需要哪种转换方法。

注意:这是我继承的旧旧数据库。对于这些日期值而不是datetime的varchar字段类型选择不多,我感到惊讶。

SELECT convert(datetime, dbo.EffectiveDate, 100) from Employees

SELECT convert(datetime, dbo.EffectiveDate) from Employees

来自示例:SELECT convert(datetime, 'Oct 23 2012 11:01AM', 100)

SELECT convert(datetime, 'Oct 23 2012 11:01AM')

即使字段值不包括时间部分,我也尝试过

员工表:

EffectiveDate varchar字段

2006年12月12日

2006年10月24日

..

..

有什么建议吗?

2 个答案:

答案 0 :(得分:0)

这就是我要做的。也就是说,如果varchar date列都遵循以下格式:(MMM-dd-yyyy)

select convert(datetime,convert(date, replace('Apr-10-2009', '-', ' '))) 

输出:2009-04-10 00:00:00.000

答案 1 :(得分:0)

国际公认的日期格式顺序为yyyy-mm-dd,请使用此布局,它将更好地工作

https://en.wikipedia.org/wiki/ISO_8601

例如

SELECT convert(datetime, '2012 Oct 23  11:01AM')