0

我在 MYSQL 中有一个如下表:

proj_id|hoursWorked|Date.  

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

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

4

3 回答 3

5

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

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

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

于 2012-12-25T11:55:07.780 回答
2

使用

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

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

select * from your_table
where week(`Date`) = week(curdate())
于 2012-12-25T11:45:43.640 回答
2

使用 MySQLWEEK()函数。

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

来自 MySQL 文档

此函数返回日期的周数。WEEK() 的两个参数形式使您可以指定星期是从星期日还是星期一开始,以及返回值应在 0 到 53 或 1 到 53 的范围内。

于 2012-12-25T11:46:31.957 回答