根据周数从MYSQL中检索数据

我在MYSQL中有如下表:

proj_id|hoursWorked|Date. 

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

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

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

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

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

使用MySQL WEEK()函数。

 SELECT WEEK(dateColumn) FROM... WHERE WEEK(dateColumn) = 1 
  • 周()

来自MySQL Docs

此函数返回日期的周数。 WEEK()的双参数forms使您能够指定周是在星期日或星期一开始,以及返回值是否应该在0到53或1到53的范围内。

使用WEEK

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

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

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