SQL datetime比较

时间:2015-12-09 08:59:27

标签: sql-server datetime

我想从我的表中获取一些值,其中有一些关于其datetime列的条件。

我想从我的表中获取所述城市的所有酒店值,该名称为“LocalHotels”。我还应声明两个DateTime值。第一个值应小于或等于“start”列中酒店的值,即datetime数据类型。第二个值应大于或等于“deadline”列中酒店的值,即datetime数据类型。

这两列中的所有datetime值都以德语CultureInfo格式插入。

当我在下面陈述查询时,没有问题;

string query = "SELECT * FROM LocalHotels WHERE city='LONDON' AND start <='5.12.2015 00:00:00' AND deadline >='8.12.2015 00:00:00' ORDER BY city";

但是当我将DateTime值的日值从一位数改为两位数时,如下所述;

string query "SELECT * FROM LocalHotels WHERE city='LONDON' AND start <='15.12.2015 00:00:00' AND deadline >='18.12.2015 00:00:00' ORDER BY city"

我有一个SQLException表示;

  

导致将varchar数据类型转换为日期时间数据类型   在超出范围的价值。

4 个答案:

答案 0 :(得分:9)

即使在欧洲和世界各地,使用月份作为日期中三个项目中的第二个也是完全合理的。在美国,在这种情况下,显然,SQL的日期时间是MM.DD.YYYY,所以你要去的是第15个月和第18个月

因此你应该使用

string query "SELECT * FROM LocalHotels WHERE city='LONDON' AND start <='12.15.2015 00:00:00' AND deadline >='12.18.2015 00:00:00' ORDER BY city"

string query "SELECT * FROM LocalHotels WHERE city='LONDON' AND start <='2015-12-15' AND deadline >='2015-12-18' ORDER BY city"

答案 1 :(得分:5)

尝试更改

15.12.2015 00:00:00 

2015-12-15 00:00:00

和其他日期的格式相同。

答案 2 :(得分:1)

SELECT CONVERT(char(10), GetDate(),126)

select convert(varchar,getDate(),112)

select replace(convert(varchar, getdate(), 111), '/','-')

测试上面的查询以获得所需格式的日期(将GetDate()替换为您的日期或dateColumn)。 正如其他人指出你需要格式YYYY-MM-DD。

答案 3 :(得分:1)

您可以通过运行此查询来查看SQL Server的日期和时间格式:

SELECT
    GETDATE()

如您所见,格式为YYYY-MM-DD HH:MM:SS.MMM。坚持这一点,你不会遇到任何意外的转换错误。