我有以下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文字代码。
答案 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'}