将字符串日期转换为 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')
我在数据库中有一个带有日期的 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')