使用BETWEEN时发生SQL语法错误

使用BETWEEN时发生SQL语法错误,sql,Sql,我有一张叫票的桌子。然而,我试图在两个日期之间进行查询;我总是遇到语法错误。对于这个语法错误可能是什么,任何帮助都将不胜感激 SELECT date FROM ticket WHERE date BETWEEN YEAR(ticket.date)=2011 AND MONTH(ticket.date)=11 AND DAY(ticket.date)=06 AND YEAR(ticket.date)=2011 AND MONTH(ticket.date)=11

我有一张叫票的桌子。然而,我试图在两个日期之间进行查询;我总是遇到语法错误。对于这个语法错误可能是什么,任何帮助都将不胜感激

SELECT date 
FROM ticket 
WHERE date BETWEEN YEAR(ticket.date)=2011 AND MONTH(ticket.date)=11 AND DAY(ticket.date)=06
                AND YEAR(ticket.date)=2011 AND MONTH(ticket.date)=11 AND DAY(ticket.date)=12
您的SQL语法有错误;检查与您的MySQL服务器版本对应的手册,以了解在第1行的“=2011、月(ticket.date)=11、日(ticket.date)=06和年(ticket.date)=20”附近使用的正确语法

date BETWEEN YEAR(ticket.date)=2011 
没有任何意义。语法是

date BETWEEN start_range AND end_range
大概是这样吧

date BETWEEN '2011-11-06' AND  '2011-11-12'
或者,由于您有一个时间组件,您应该完全避免在之间使用
,而只使用

date >= '2011-11-06' AND  date  < '2011-11-13'
日期>='2011-11-06'和日期<'2011-11-13'
没有任何意义。语法是

date BETWEEN start_range AND end_range
大概是这样吧

date BETWEEN '2011-11-06' AND  '2011-11-12'
或者,由于您有一个时间组件,您应该完全避免在
之间使用
,而只使用

date >= '2011-11-06' AND  date  < '2011-11-13'
日期>='2011-11-06'和日期<'2011-11-13'

这是一个不正确的
介于
之间的条款:

BETWEEN YEAR(ticket.date)=2011
它应该是这样的:

BETWEEN YEAR(ticket.date) AND 2011

这是一个不正确的
BETWEEN
子句:

BETWEEN YEAR(ticket.date)=2011
它应该是这样的:

BETWEEN YEAR(ticket.date) AND 2011

我认为我们将采取以下措施:

"SELECT 
    date 
FROM 
    ticket 
WHERE 
    date BETWEEN '2011-11-06' AND 2011-11-12'"

你不应该像你那样使用中间人。您正在进行一次评估,而您的(我的)sql不支持这种评估。

我认为我们可以这样做:

"SELECT 
    date 
FROM 
    ticket 
WHERE 
    date BETWEEN '2011-11-06' AND 2011-11-12'"
你不应该像你那样使用中间人。您正在进行的评估中,您的(我的)sql不支持该评估。

请尝试以下操作:

SELECT date 
FROM ticket 
WHERE DAY(ticket.date) BETWEEN 6 AND 12
AND MONTH(ticket.date) = 11
AND YEAR(ticket.date) = 2011
试试这个:

SELECT date 
FROM ticket 
WHERE DAY(ticket.date) BETWEEN 6 AND 12
AND MONTH(ticket.date) = 11
AND YEAR(ticket.date) = 2011

您不能在
中列出多个介于
之间的值

将查询重写为:

SELECT date  
FROM ticket  
WHERE date BETWEEN '2011-11-06' and '2011-11-12'

您不能在
中列出多个介于
之间的值

将查询重写为:

SELECT date  
FROM ticket  
WHERE date BETWEEN '2011-11-06' and '2011-11-12'

这将非常缓慢,因为MySQL无法在该查询中使用索引。这将非常缓慢,因为MySQL无法在该查询中使用索引。我使用YEAR关键字,因为date字段中包含日期和时间,并且从我过去的一些查询中过滤出信息。@MasterP-只需使用
WHERE date>=“2011-11-06”和date<'2011-11-13'
我之所以使用YEAR关键字,是因为date字段中有日期和时间,并且从我过去的一些查询中,它会过滤掉信息。@MasterP-只需使用
其中date>='2011-11-06'和date<'2011-11-13'