Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 基于周数从MYSQL检索数据_Java_Mysql_Sql_Date_Select - Fatal编程技术网

Java 基于周数从MYSQL检索数据

Java 基于周数从MYSQL检索数据,java,mysql,sql,date,select,Java,Mysql,Sql,Date,Select,我在MYSQL中有一个表,如下所示: proj_id|hoursWorked|Date. 日期字段的类型为日期;我希望根据基于java的web应用程序中项目的给定周数从表中检索所有条目。请帮助我实现这一目标 我无法编写一个允许我这样做的查询。使用 如果您只想获取本周的记录,可以这样做 select * from your_table where week(`Date`) = week(curdate()) 使用MySQL WEEK函数 SELECT WEEK(dateColumn) FR

我在MYSQL中有一个表,如下所示:

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

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

使用

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

select * from your_table
where week(`Date`) = week(curdate())
使用MySQL WEEK函数

SELECT WEEK(dateColumn)
FROM...
WHERE WEEK(dateColumn) = 1
来自MySQL文档

此函数用于返回日期的周数。双参数形式 使用“每周”可以指定一周是从星期天开始还是从星期天开始 星期一,以及返回值是否应在0到 53或从1到53

不要使用像WHERE WEEKcolumn=something这样的东西——这是一个性能杀手:它将计算所有行上的周数,即使它们不匹配。除此之外,它还将使此列无法使用索引

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


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

您尝试过哪些查询?你看过关于这个主题的MySQL文档了吗?我尝试过在日期上使用减法函数。周数将与给定的日期相关,例如本例中的项目开始日期。你可以使用任何你喜欢的日期并从中提取周数。查看我的更新。是否有方法指定年份和星期?例如,我有2012年和2013年的数据,在进行选择时,我只需要2013年的记录。从my_表中选择*,其中weekDate=2013-50我可以做类似的事情吗???@GovindKailas:@juergen它似乎不起作用从my_表中选择*,其中yearweekDate=201350如果我计算相对于某个固定日期的周数,如何使用Week函数。试试,其中WEEKdateColumn=WEEKCURDATE@JW你不同意尤金瑞克在上面的回答中所说的吗?为了更好地理解,我只想问一个简单的问题。@Bhaviksha我当然同意,因为在列名周围使用函数会杀死索引D@JW那么我想,尤金瑞克的答案在性能和速度方面更好。谢谢你的回复。圣诞快乐。意思是说你建议我必须找到给定周数的开始日期和结束日期,然后使用这些日期之间的间隔来获取给定周数的数据。如果我搞错了,请纠正我。这正是我的想法。我不熟悉Java基类库,但我所熟悉的所有环境都有函数,可以在几行代码中执行此操作。
SELECT WEEK(dateColumn)
FROM...
WHERE WEEK(dateColumn) = 1