从字符串转换为Datetime T-SQL

时间:2017-09-28 13:26:46

标签: sql sql-server tsql

如何使用日期时间字段检索特定月份,请说我有以下表格

ID - DATETIME - AMOUNT
01 - 27/05/2017 - 1
02- 02/06/2017 - 2
03- 03/07/2017 - 1
04- 05/05/2017 - 2
05- 13/06/2017 - 3

编写查询以检索May记录的正确方法是什么 我使用了以下查询,但它给了我错误。

  

SELECT * FROM TABLE WHERE TABLE.DATETIME =' 05/2017'

Msg 241, Level 16, State 1, Line 3
Conversion failed when converting date and/or time from character string.

3 个答案:

答案 0 :(得分:4)

您可以使用此功能(但如果TABLE.DATETIME列上有索引,则不会使用该索引):

SELECT * 
FROM   TABLE 
WHERE  MONTH(TABLE.DATETIME) = 5
   AND YEAR(TABLE.DATETIME) = 2017

可能更有效(如果您已经或计划添加索引):

SELECT * 
FROM   TABLE 
WHERE  TABLE.DATETIME >= '20170501'
   AND TABLE.DATETIME < '20170601' 

答案 1 :(得分:2)

检查月初和月末。

where DateTime >= '20170501' and
      DateTime < '20170601'

答案 2 :(得分:0)

或者你可以使用之间的条款:

SELECT *
FROM TABLE 
WHERE TABLE.DATETIME BETWEEN '01/05/2017' AND '31/05/2017'