0

我正在使用 mysql 中的 week() 函数来确定日期的周数。我面临的问题是它总是比实际周数少一个数字。假设今天是 2013-05-15,因为它是今年的第 20 周,但结果是 19。以下是我正在使用的查询。

 SELECT *,WEEK(date_visit) AS week_no FROM property_view_details;
4

4 回答 4

12

直接来自文档

mysql> SELECT WEEK('2008-02-20',1);
    -> 8

WEEK您可以通过将第二个参数分别设置为 0-indexed011-indexed 结果来更改 的行为。

于 2013-05-15T15:04:14.053 回答
8

将第二个week参数设置为正确的值。

引用文档: https ://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_week

M   F.day   Range   Week 1 is the first week …
0   Sunday  0-53    with a Sunday in this year
1   Monday  0-53    with more than 3 days this year
2   Sunday  1-53    with a Sunday in this year
3   Monday  1-53    with more than 3 days this year
4   Sunday  0-53    with more than 3 days this year
5   Monday  0-53    with a Monday in this year
6   Sunday  1-53    with more than 3 days this year
7   Monday  1-53    with a Monday in this year

M = Mode
F.day = First day of week

样本:

mysql> SELECT WEEK('2008-02-20',0);
        -> 7
mysql> SELECT WEEK('2008-02-20',1);
        -> 8
于 2013-05-15T15:02:36.877 回答
2

手册应该对此有所说明。

default_week_format可能设置为默认值0,这意味着周从零开始计数。尝试将其更改为1,或仅调整查询以说明更改。

于 2013-05-15T15:04:40.757 回答
1

只用一个简单的谷歌研究函数的操作就发现了这个:http ://www.w3resource.com/mysql/date-and-time-functions/mysql-week-function.php

简而言之,您可以为该功能分配一种操作模式。也就是说,一周从哪一天开始,应该从 0 还是 1 开始。

例如,SELECT WEEK(date_visit, 2)将从星期日开始计算周数,并从 1 开始计算。

祝你好运。

于 2013-05-15T15:06:01.503 回答