【问题标题】:error when trying to retrieve data within a date range尝试检索日期范围内的数据时出错
【发布时间】:2013-01-17 11:55:05
【问题描述】:

我正在尝试检索某个日期范围内的数据,但出现以下错误

The conversion of char data type to smalldatetime data type resulted in an out-of-range smalldatetime value

这是基本的 sql 查询

SELECT * FROM tblCustomers WHERE date BETWEEN '19/12/2012' AND '1/17/2013'
GO

我该如何纠正这个错误

【问题讨论】:

  • 尝试使用不会被区域设置混淆的日期格式。使用yyyymmddBETWEEN '20121219' AND '20130117'
  • 似乎连问题都对日期格式感到困惑,第一个日期是 dd/mm/yy,第二个日期是 mm/dd/yy。

标签: sql-server-2005 visual-studio-2008


【解决方案1】:

使用字符串表示日期时间值会导致这种情况

SELECT * FROM tblCustomers WHERE date BETWEEN Convert(smalldatetime, '19/12/2012', 105) AND Convert(smalldatetime, '1/17/2013', 101)
GO

但是,我应该问你。为什么对同一个查询使用两种不同的日期格式?

See the Convert function on T-SQL here 了解最终 101 参数的解释和可能值

【讨论】:

  • 101 在第一次转换中可能应该是103...但在第二次转换中似乎是相反的。
  • 奇怪,我注意到这里有点混乱 19/12/2012 是 dd/MM/yyyy 而 1/17/2013 是 mm/dd/yyyy。
猜你喜欢
  • 2015-11-19
  • 2015-06-30
  • 1970-01-01
  • 2019-03-31
  • 1970-01-01
  • 1970-01-01
  • 2014-01-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多