1

我写了一个视图,其中表中的日期转换为

convert(varchar, date, 103) 

并取别名为 DATE1 然后我写了如下查询:

select DATE1  
from date_demo
WHERE  MONTH(DATE1) = '12'

我只想检索月份 = 'december' 为 12 的特定记录

我收到一个错误:

将 char 数据类型转换为 datetime 数据类型会导致 datetime 值超出范围。

这是在 SQL Server 2005 中,请帮助我

4

1 回答 1

2

正如大卫建议的那样,您应该使用日期列而不是转换为字符串然后再转换回日期时间列。

但是,当您将其转换回日期时间时,您需要指定日期时间样式

select DATE1  from date_demo
WHERE  MONTH(convert(datetime,DATE1,103))= '12'

此外,您需要指定 varchar 数据类型的长度 阅读这篇文章的坏习惯是踢出没有长度的声明 varchar

于 2013-03-27T05:48:33.890 回答