SQL日期选择

时间:2009-03-10 14:45:25

标签: sql mysql date

我希望能够选择月份和年份与我搜索的内容相同的所有数据库行。由于DATE字段包含年,月和日,我如何搜索年和月?

6 个答案:

答案 0 :(得分:6)

SELECT * 
FROM tblTableName 
WHERE Month(ColumnDate) = Month(MyDate) 
    AND Year(ColumnDate) = Year(MyDate)

答案 1 :(得分:3)

SELECT *
FROM myTable
WHERE ( YEAR(myfield) = '2009')
  AND ( MONTH(myfield) = '1')

答案 2 :(得分:3)

最有效的方法是创建所需范围的开始日期和结束日期,以便将日期作为单个值进行比较,而不是从每个日期中提取年份和月份属性。

示例:

select SomeField
from SomeTable
where SomeDate >= ? and SomeDate < ?

(请注意,第一次比较是包容性的,而seond是独家的。)

创建用作参数的开始日期和结束日期:( C#中的示例)

DateTime start = new DateTime(date.Year, date.Month, 1)
DateTIme end = start.AddMonths(1);

答案 3 :(得分:2)

MySQL

SELECT *
FROM   mytable
WHERE  date >= STR_TO_DATE(CONCAT(EXTRACT(YEAR_MONTH FROM @mydate), '01'), '%Y%m%d')
   AND date < STR_TO_DATE(CONCAT(EXTRACT(YEAR_MONTH FROM @mydate), '01'), '%Y%m%d') + INTERVAL 1 MONTH

这将有效地使用date字段上的索引。

答案 4 :(得分:1)

这取决于您使用的数据库后端。在SQl服务器中我会使用

where year(datefield) = @year and month (datefield) - @month 

这样做。

或者您可以通过创建日期范围来构建where子句

20090101和20090201之间的日期字段

答案 5 :(得分:0)

您需要在mysql中使用MONTH()YEAR()