【问题标题】:numeric representation of the day of the week MySql Vs PHPMySql Vs PHP 星期几的数字表示
【发布时间】:2012-11-08 18:27:12
【问题描述】:

在我的 PHP 代码中,我使用 date("N") ISO-8601 数字表示第 1 周(周一)到第 7 周(周日)。

现在,当我想进行查询以搜索特定日期时。

我在 MySQL 中发现:

  • 使用 %wdate_format 将返回 (0=Sunday..6=Saturday)

  • DAYOFWEEK(date) 将返回(1 = 星期日 .. 7 = 星期六)

有没有一种快速的方法来解决这个问题不做一些PHP

【问题讨论】:

  • 使用 DateTime 对象将使您的生活更轻松。容易得多。

标签: mysql iso8601 date-format php


【解决方案1】:

正在尝试匹配...

PHP 日期('N'):

周一 周二 周三 周四 周五 周六 周日
1 2 3 4 5 6 7

到其中之一...

MySQL DATE_FORMAT(col, '%w'):

周一 周二 周三 周四 周五 周六 周日
1 2 3 4 5 6 0

MySQL DAYOFWEEK(col):

周一 周二 周三 周四 周五 周六 周日
2 3 4 5 6 7 1

我会使用 CASEDATE_FORMAT 声明,因为您只需要担心星期天。

SELECT
    CASE
        WHEN DATE_FORMAT(col, '%w') = 0
            THEN 7
        ELSE DATE_FORMAT(col, '%w')
   END AS dayofweek
...

【讨论】:

  • 谢谢,我会用 PHP 来做...我认为 MYSQL 有一个直接的功能来做这件事。我错了:)
【解决方案2】:

就像said in the comments:

减法或加法(PHP 或 MySQL 查询)。

【讨论】:

  • 在 php Sunday 是 7 而在 MySQL Sunday 是(0 或 1 取决于您使用的函数)所以您需要添加测试以查看它是 0 还是 7 ...我在我的问题中提到没有 php 修改......是否有一个 MySQL 函数返回与 php 方法相同的函数?
【解决方案3】:
SELECT (DAYOFWEEK(column)+6)%7 as phpdaten FROM ...

【讨论】:

    【解决方案4】:

    例如,对于当前日期,您可以选择一周的第一天,如下所示:

    SELECT  DATE_SUB(now(), INTERVAL
                IF (DATE_FORMAT(now(), '%w') -1  = -1,
                    DATE_FORMAT(now(), '%w') + 6,
                    DATE_FORMAT(now(), '%w') -1) DAY) FIRST_DAY,
            now();
    

    【讨论】:

    • 如果你愿意,你可以花一个日期参数:SELECT DATE_SUB('2010-0101', INTERVAL IF (DATE_FORMAT('2010-0101', '%w') -1 = -1, DATE_FORMAT('2010-0101', '%w') + 6, DATE_FORMAT('2010-0101', '%w') -1) DAY) FIRST_DAY, '2010-0101';
    【解决方案5】:

    令我惊讶的是,没有人使用 mysql WEEKDAY。在ISO -8601 中,一周从星期一开始。

    工作日(日期)

    返回日期的工作日索引(0 = 星期一,1 = 星期二,... 6 = 星期日)。

    DAYOFWEEK(日期)

    返回日期的工作日索引(1 = 星期日,2 = 星期一,...,7 = 星期六)。

    mysql                   PHP                          result
    WEEKDAY(date)       ==  date('N' , timestamp) - 1    0: Monday, 1: Tuesday, … 6: Sunday 
    WEEKDAY(date)  + 1  ==  date('N' , timestamp)        1: Monday, 2: Tuesday, … 7: Sunday
    
    DAYOFWEEK(date) -1  ==  date('w' , timestamp)        0: Sunday, 1: Monday, … 6: Saturday
    DAYOFWEEK(date)     ==  date('w' , timestamp) + 1    1: Sunday, 2: Monday, … 7: Saturday
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-22
      • 2016-07-02
      • 1970-01-01
      • 1970-01-01
      • 2011-08-23
      相关资源
      最近更新 更多