SQL查询错误还是在其他地方?

时间:2012-01-27 19:44:56

标签: sql

我正在尝试查询sql数据库,但我遇到了麻烦。下面的语法是否有错误,或者是我缺少的其他内容?

SELECT Name, DateTime, num1, num2 
FROM names_E6 
WHERE DateTime between '2012-1-27' AND '2012-1-27' 
WHERE num1 between '0' AND '5' 
WHERE num2 between '0' AND '6'

2 个答案:

答案 0 :(得分:5)

是的,您不能在一个WHERE中拥有多个SELECT子句。使用ANDOR分隔条件(根据查询的外观,我猜你想要AND)。

SELECT Name, DateTime, num1, num2  
FROM names_E6  
WHERE DateTime between '2012-1-27' AND '2012-1-27'  
AND num1 between '0' AND '5'  
AND num2 between '0' AND '6' 

答案 1 :(得分:2)

除了有关语法的答案之外,我还想对值文字的用法添加注释:

如果num1和num2是数字,则条件应为

AND num1 between 0 AND 5  
AND num2 between 0 AND 6

注意数字周围缺少单引号。有些DBMS甚至不允许从字符升级'5'转换为数字,其他人可能会对奇怪的结果感到惊讶,如果这样的隐式类型转换成功,大多数都不会在列上使用索引。 / p>

您还应该知道,由于服务器和/或客户端的隐式类型转换(String - > Date)和区域设置,表达式DateTime between '2012-1-27' AND '2012-1-27'可能无法始终正常工作。为了安全起见,您应该使用例如日期文字的ANSI标准:

 DateTime between DATE '2012-01-27' AND DATE '2012-01-27'

请注意关键字DATE以开始日期字面值,以及以两位数字给出的月份。