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

convert string date with 3 char month

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

varchar data type to a datetime data type resulted in an out-of-range value.

我知道它必须是 3 个字符的月份,但不确定我需要使用哪种转换方法。

注意:这是我继承的旧遗留数据库。我对这些日期值而不是日期时间的 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')

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

员工table:

EffectiveDate varchar 字段

2006 年 12 月 12 日

2006 年 10 月 24 日

..

..

等等

有什么建议吗?

这就是我会做的。也就是说,如果 varchar 日期列都遵循这种格式:(MMM-dd-yyyy)

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

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

国际公认的日期格式顺序是yyyy-mm-dd,用这个布局效果会更好

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

例如

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