2016-08-14 82 views

回答

2

大约从日期本身获得的第一个星期日刚过怎么过吗?

SELECT DATE_ADD(A.date_from, INTERVAL (6 - WEEKDAY(A.date_from)) DAY) from myTable as A; 

http://sqlfiddle.com/#!9/7fce5

如果星期天没有日期间:

SELECT DATE_ADD(A.date_from, INTERVAL (6 - WEEKDAY(A.date_from)) DAY) as firstsunday from myTable as A where DATE_ADD(A.date_from, INTERVAL (6 - WEEKDAY(A.date_from)) DAY) between A.date_from and A.date_to; 

http://sqlfiddle.com/#!9/83d0f0/4

一点点短:

SELECT firstsunday from (SELECT A.date_from, A.date_to, DATE_ADD(A.date_from, INTERVAL (6 - WEEKDAY(A.date_from)) DAY) as firstsunday from myTable as A) as B where B.firstsunday between B.date_from and B.date_to; 

http://sqlfiddle.com/#!9/6adab3/1

+0

谢谢先生,它工作得很好。 –

+0

@Strawberry我已经更新了答案。但我不知道如何缩短它。 –

+0

什么是创造性的解决方案。 +1 – BeetleJuice

0

试试这个:

SELECT dt, DAYNAME(dt) as day 
FROM myTable WHERE dt BETWEEN date1 AND date2 
ORDER BY dt 
WHERE day = "Sunday" 
LIMIT 0,1 
+0

您好先生,thnx您的速度响应..我编辑我的帖子先生复制我当前的表设置。 (我没有dt字段) –

0

假设你只需要起诉分贝来获得日期范围,你不希望任何国王查询。

<?php 

echo date('m/d/Y', strtotime('next Sunday', strtotime('2016-08-6'))); 

你可以添加一些验证,以确保它的结束日期

+0

嗨,先生,thnx您的答复,,但我想直接从查询中获得它 –