![](/img/trans.png)
[英]php/mysql start the day of the week on wednesday and last day of the week on tuesday
[英]numeric representation of the day of the week MySql Vs PHP
在我的PHP代码中,我使用日期(“ N”)ISO-8601表示星期1(星期一)到7(星期日)的数字。
现在,当我想进行查询以搜索特定日期时。
我在MySQL中发现:
使用%w的date_format将返回(0 = Sunday..6 = Saturday)
DAYOFWEEK(日期)将返回(1 =星期日.. 7 =星期六)
有没有一种不用PHP就能解决此问题的快速方法?
试图匹配...
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
我将在DATE_FORMAT
使用CASE
语句,因为您只需要担心星期日。
SELECT
CASE
WHEN DATE_FORMAT(col, '%w') = 0
THEN 7
ELSE DATE_FORMAT(col, '%w')
END AS dayofweek
...
正如评论中所说 :
减去或添加一个(对PHP或MySQL查询)。
SELECT (DAYOFWEEK(column)+6)%7 as phpdaten FROM ...
令我惊讶的是没有人使用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
例如,对于当前日期,您可以选择一周的第一天,如下所示:
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();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.