SQL Server提供语法错误

时间:2015-09-14 12:52:08

标签: sql sql-server date select

我有以下SQL for Microsoft SQL Server

SELECT * 
FROM tblA
WHERE CREATION_DATE BETWEEN DATE'2015-09-12' AND DATE'2015-09-15'

但这会引发语法错误:

  

错误:2015-09-12'附近的语法错误。 SQLState:S0001 ErrorCode:   102

有什么问题?我想使用ANSI文字代码。

4 个答案:

答案 0 :(得分:5)

这不是您在MS SQL Server中的演员方式。相反,您应该尝试cast语法:

SELECT * 
FROM   tblA
WHERE  creation_date BETWEEN CAST('2015-09-12' AS DATE) AND 
                             CAST('2015-09-15' AS DATE)

答案 1 :(得分:3)

您只需使用此查询,而无需添加日期:

SELECT * 
FROM tblA
WHERE CREATION_DATE BETWEEN '2015-09-12' AND '2015-09-15'

答案 2 :(得分:1)

SELECT * 
FROM   tblA
WHERE  CREATION_DATE BETWEEN CAST('2015-09-12' AS DATE) 
                         AND CAST('2015-09-15' AS DATE)

答案 3 :(得分:1)

日期文字很棘手......除了转换问题(通常取决于你的系统文化),如果你在两者之间使用,你必须想到这一天结束!

在这里,您可以找到一种独立于系统的方式来编写日期:https://msdn.microsoft.com/en-us/library/ms187819.aspx?f=255&MSPPError=-2147217396(查看" ODBC)

所以你可以写

BETWEEN {d'2015-09-12'} AND {ts'2015-09-12 23:59:59'}