选择Where月= X和年= Y

时间:2013-05-10 13:01:54

标签: sql tsql datepart

我有以下选择:

SELECT * FROM Table
WHERE Column= datepart(month,'2013-05-07 10:18:00') 
  AND Column= datepart(year,'2013-05-07 10:18:00')

我想让它向我展示月份= 05和年份= 2013年的情况。实际上它没有显示任何内容(但有结果显示)。感谢。

5 个答案:

答案 0 :(得分:6)

我会使用MONTH和YEAR函数

SELECT * FROM Table
WHERE MONTH(yourColumn) = 5  and YEAR(yourColumn) = 2013

http://msdn.microsoft.com/en-us/library/ms186313.aspx

http://msdn.microsoft.com/en-us/library/ms187813.aspx

答案 1 :(得分:3)

SELECT * 
  FROM Table
 WHERE datepart(month, datecolumn) = 5
   AND datepart(year, datecolumn) = 2013

答案 2 :(得分:1)

在列上应用函数通常是一个坏主意。它使条件为non-sargable

最好在一段时间内进行测试。

SELECT * 
FROM YourTable
WHERE DateCol >= '20130501' AND
      DateCol < '20130601'

A SQL Fiddle to play around with that proves my point

答案 3 :(得分:-1)

尝试

SELECT * FROM Table WHERE month = DATE_FORMAT('2013-05-07 10:18:00', '%m') AND ...

答案 4 :(得分:-1)

我想你的专栏本身就是DATE? 然后你需要在“=”

的两边应用DATEPART
SELECT
        *
    FROM Table
    WHERE
        DATEPART(MONTH, Column)= DATEPART(MONTH,'2013-05-07 10:18:00') 
        AND DATEPART(YEAR, Column) = DATEPART(YEAR,'2013-05-07 10:18:00')