根据周数从MYSQL中检索数据

时间:2012-12-25 11:44:09

标签: java mysql sql date select

我在MYSQL中有一个如下表:

proj_id|hoursWorked|Date.  

日期字段的类型为Date;我想根据基于java的Web应用程序中项目的给定周数检索表中的所有条目。请帮助我实现这一目标。

我无法编写允许我这样做的单个查询。

3 个答案:

答案 0 :(得分:5)

使用类似WHERE WEEK(column)=something的内容 - 这是性能杀手:它会计算所有行的周数,即使它们不匹配。除此之外,它将无法在此列上使用索引。

而是根据您的数据类型计算绝对开始和结束日期或时间点,然后使用BETWEEN。这不会对非匹配行进行计算,并允许使用索引。

经验法则:如果您可以在常数和字段上进行计算,请使用前者。

答案 1 :(得分:2)

使用WEEK

select * from your_table
where week(`Date`) = week('2012-12-01')

如果您只想获得本周的记录,可以

select * from your_table
where week(`Date`) = week(curdate())

答案 2 :(得分:2)

使用MySQL WEEK()函数。

SELECT WEEK(dateColumn)
FROM...
WHERE WEEK(dateColumn) = 1
来自MySQL Docs的

  

此函数返回日期的周数。两论证形式   WEEK()使您可以指定周是在周日开始还是周日开始   星期一以及返回值是否应该在0到0之间   53或1至53。