在我的PHP代码中,我使用日期(“N”)ISO-8601数字表示第1周(星期一)到7(星期日)的日期。
现在,当我想查询以搜索特定日期时。
我在MySQL中发现:
使用%w 的 date_format 将返回(0 =星期日... 6 =星期六)
DAYOFWEEK(日期)将返回(1 =星期日... 7 =星期六)
有没有快速解决此问题的方法而不做一些PHP ?
答案 0 :(得分:2)
试图匹配......
PHP date('N'): Mon Tue Wed Thu Fri Sat Sun 1 2 3 4 5 6 7
其中一个......
MySQL DATE_FORMAT(col, '%w'): Mon Tue Wed Thu Fri Sat Sun 1 2 3 4 5 6 0 MySQL DAYOFWEEK(col): Mon Tue Wed Thu Fri Sat Sun 2 3 4 5 6 7 1
我会在CASE
使用DATE_FORMAT
语句,因为您只需要担心星期天。
SELECT
CASE
WHEN DATE_FORMAT(col, '%w') = 0
THEN 7
ELSE DATE_FORMAT(col, '%w')
END AS dayofweek
...
答案 1 :(得分:1)
减去或添加一个(PHP或MySQL查询)。
答案 2 :(得分:1)
SELECT (DAYOFWEEK(column)+6)%7 as phpdaten FROM ...
答案 3 :(得分:0)
令我惊讶的是,没有人使用mysql WEEKDAY
。在ISO -8601,星期一星期一开始。
WEEKDAY(日期)
返回日期的工作日索引(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
答案 4 :(得分:-1)
例如,对于当前日期,您可以按如下方式选择一周的第一天:
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();