将 char 数据类型转换为 datetime 数据类型导致 SQL Server 2005 中的 datetime 值超出范围
Posted
技术标签:
【中文标题】将 char 数据类型转换为 datetime 数据类型导致 SQL Server 2005 中的 datetime 值超出范围【英文标题】:The conversion of a char data type to a datetime data type resulted in an out-of-range datetime value in SQL Server 2005 【发布时间】:2013-03-27 05:43:04 【问题描述】:我写了一个视图,其中表格中的日期被转换为
convert(varchar, date, 103)
并取别名为 DATE1,然后我编写了如下查询:
select DATE1
from date_demo
WHERE MONTH(DATE1) = '12'
我只想检索月份 = 'december' 为 12 的特定记录
我遇到了一个错误:
将 char 数据类型转换为 datetime 数据类型会导致 datetime 值超出范围。
这是在 SQL Server 2005 中,请帮助我
【问题讨论】:
为什么不使用 where 子句中的基础日期列,而不是显式转换为字符串,然后隐式返回日期时间?你想让你的服务器哭吗? 【参考方案1】:正如大卫建议的那样,您应该使用日期列而不是转换为字符串然后再转换回日期时间列。
但是,当您将其转换回日期时间时,您需要指定Date Time Style
select DATE1 from date_demo
WHERE MONTH(convert(datetime,DATE1,103))= '12'
另外你需要指定varchar数据类型的长度阅读这篇文章bad habits to kick declaring varchar without length
【讨论】:
这不是错误所指的,SQL可以很好地完成从字符串到int的转换 我的错误。更新了答案以上是关于将 char 数据类型转换为 datetime 数据类型导致 SQL Server 2005 中的 datetime 值超出范围的主要内容,如果未能解决你的问题,请参考以下文章
如何将 varchar 日期转换为 datetime2 日期