Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 2005 标准化SQL中的日期。算术溢出_Sql Server 2005_Datetime - Fatal编程技术网

Sql server 2005 标准化SQL中的日期。算术溢出

Sql server 2005 标准化SQL中的日期。算术溢出,sql-server-2005,datetime,Sql Server 2005,Datetime,我有一个字符串字段dob,它有各种格式的生日,例如 多巴哥 1945年7月1日 1967-1-7 1956年5月13日 1947年5月8日 1953年9月27日 1952-3-25 我尝试使用MS SQL 2005创建标准化的日期字段 select convert(datetime,dob,103) from myTable 我得到一个算术溢出,它似乎与最后一个值相关,大概是因为它试图将25转换为一个月,而这是一天 我试过了 将语言设置为英国和其他各种风格,但没有成功 有什么建议吗?为什么要尝

我有一个字符串字段dob,它有各种格式的生日,例如

多巴哥

1945年7月1日
1967-1-7
1956年5月13日

1947年5月8日
1953年9月27日
1952-3-25

我尝试使用MS SQL 2005创建标准化的日期字段

select convert(datetime,dob,103)
from myTable
我得到一个算术溢出,它似乎与最后一个值相关,大概是因为它试图将25转换为一个月,而这是一天 我试过了 将语言设置为英国和其他各种风格,但没有成功


有什么建议吗?

为什么要尝试以给定的格式存储它?你能不能不把它存储为datetime类型?将其存储在独立于语言环境的环境中的最大优点是,您可以将表示逻辑卸载到它所属的UI中。另外,您可以避免DOB为3-4-5的混乱情况(2003年4月5日、2005年3月4日、2005年4月3日)

转换为日期时间对我来说很好(美国地区)

结果

real_datetime   dob
1945-07-01 00:00:00.000 July 1, 1945
1967-01-07 00:00:00.000 1967-1-7
1956-05-13 00:00:00.000 13 May 1956
1947-05-08 00:00:00.000 8 may 1947
1953-09-27 00:00:00.000 27 september 1953
1952-03-25 00:00:00.000 1952-3-25

为什么要尝试以给定的格式存储它?你能不能不把它存储为datetime类型?将其存储在独立于语言环境的环境中的最大优点是,您可以将表示逻辑卸载到它所属的UI中。另外,您可以避免DOB为3-4-5的混乱情况(2003年4月5日、2005年3月4日、2005年4月3日)

转换为日期时间对我来说很好(美国地区)

结果

real_datetime   dob
1945-07-01 00:00:00.000 July 1, 1945
1967-01-07 00:00:00.000 1967-1-7
1956-05-13 00:00:00.000 13 May 1956
1947-05-08 00:00:00.000 8 may 1947
1953-09-27 00:00:00.000 27 september 1953
1952-03-25 00:00:00.000 1952-3-25

谢谢我想问题出在103款式上。但是,当我将其应用于整个表时,仍然会遇到相同的错误。仅在一年内,空值和空值似乎并没有造成问题。SQL是否可以识别导致错误的行,以便我可以修复/排除它们简单但不能保证有效的解决方案是添加一个where子句,如
where ISDATE(T.dob)>0
Aaron Bertrand对我的类似问题有很好的解释+方法,感谢我刚刚找到了相同的解决方案!这样,tou仍然有不明确的日期,例如“2011年5月11日”,它将把它作为默认日期,可以是5月11日或11月5日。像那样存储这些日期很麻烦。但我无法控制汉克斯。我想问题出在103款式上。但是,当我将其应用于整个表时,仍然会遇到相同的错误。仅在一年内,空值和空值似乎并没有造成问题。SQL是否可以识别导致错误的行,以便我可以修复/排除它们简单但不能保证有效的解决方案是添加一个where子句,如
where ISDATE(T.dob)>0
Aaron Bertrand对我的类似问题有很好的解释+方法,感谢我刚刚找到了相同的解决方案!这样,tou仍然有不明确的日期,例如“2011年5月11日”,它将把它作为默认日期,可以是5月11日或11月5日。像那样存储这些日期很麻烦。但我无法控制输入