根据周数从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())