MySQL查询已知日期那周的的周一日期和周日日期

已知一个日期,我需要写一个sql,得到这个日期所在那周的周一日期和周日日期。按照周一是一周的第一天,周日是一周的第七天这种方式
比如已知日期是2023-06-07,请问这个sql要如何写

引用chatgpt内容作答:
你可以使用MySQL的日期函数来计算所需的结果。以下是一个示例SQL查询,用于获取给定日期所在周的周一日期和周日日期:

SELECT
    DATE_SUB(date_column, INTERVAL (WEEKDAY(date_column) + 1) DAY) AS monday_date,
    DATE_ADD(date_column, INTERVAL (6 - WEEKDAY(date_column)) DAY) AS sunday_date
FROM
    your_table
WHERE
    date_column = '2023-06-07';

在上述查询中,将your_table替换为包含日期列的实际表名,将date_column替换为实际的日期列名(包含要查询的日期)。

此查询使用WEEKDAY()函数来获取给定日期的星期几,星期一为0,星期日为6。然后,使用DATE_SUB()函数和DATE_ADD()函数来计算周一和周日的日期。DATE_SUB()函数用于减去当前日期是星期几的天数来获得周一日期,DATE_ADD()函数用于加上缺少的天数来获得周日日期。

在上述查询中,查询条件WHERE date_column = '2023-06-07'用于指定要查询的日期是2023-06-07。你可以根据需要更改该条件。

注意:如果你的MySQL版本较旧,可能需要将DATE_SUB()和DATE_ADD()函数替换为DATE_ADD()和DATE_SUB()函数,参数顺序相反。

希望这可以帮助到你!

set @query_date='2023-06-07';
SELECT 
    DATE_ADD(@query_date,
        INTERVAL (- WEEKDAY(@query_date)) DAY) as first_date_of_this_week,
    DATE_ADD(@query_date,
        INTERVAL (6 - WEEKDAY(@query_date)) DAY) as last_date_of_this_week;

要根据已知日期获取所在周的周一日期和周日日期,你可以使用SQL中的日期函数和条件语句来实现。以下是一个示例的SQL查询语句:

SELECT 
    DATE_SUB(your_date, INTERVAL WEEKDAY(your_date) DAY) AS monday_date,
    DATE_ADD(your_date, INTERVAL (6 - WEEKDAY(your_date)) DAY) AS sunday_date
FROM 
    your_table
WHERE
    your_date = '2023-06-07';

在上述SQL语句中,your_date是已知的日期,your_table是包含日期字段的表名。

WEEKDAY(your_date)函数会返回日期对应的星期几,其中星期一为0,星期日为6。因此,DATE_SUB(your_date, INTERVAL WEEKDAY(your_date) DAY)会得到所在周的周一日期,DATE_ADD(your_date, INTERVAL (6 - WEEKDAY(your_date)) DAY)会得到所在周的周日日期。

通过在WHERE子句中指定日期为'2023-06-07',可以限制查询结果只返回该日期所在周的周一和周日日期。

请注意根据你的数据库系统和具体表结构进行适当的调整。

已知一个日期,写一个sql,得到这个日期所在那周的周一日期和周日日期。按照周一是一周的第一天,周日是一周的第七天这种方式
比如已知日期是2023-06-07,那么周一就是2023-06-05,那么周日就是2023-06-11,以下代码可以得出

SELECT 
    DATE_SUB(@inputDate, INTERVAL WEEKDAY('2023-06-07') DAY) AS Monday,
    DATE_ADD(DATE_SUB(@inputDate, INTERVAL WEEKDAY('2023-06-07') DAY), INTERVAL 6 DAY) AS Sunday;

img

回答部分参考、引用ChatGpt以便为您提供更准确的答案:

要查询已知日期所在周的周一日期和周日日期,可以使用MySQL的日期函数和条件表达式来实现。以下是一个示例SQL查询语句,以已知日期为2023-06-07为例:

SELECT
    DATE_SUB('2023-06-07', INTERVAL WEEKDAY('2023-06-07') DAY) AS Monday,
    DATE_ADD('2023-06-07', INTERVAL 6 - WEEKDAY('2023-06-07') DAY) AS Sunday;

这个查询语句中使用了WEEKDAY函数来获取给定日期的星期几,星期一返回0,星期日返回6。然后,通过使用DATE_SUBDATE_ADD函数结合条件表达式,分别计算出所在周的周一日期和周日日期。

在上述查询中,'2023-06-07'是您已知的日期,您可以将其替换为您需要查询的具体日期。执行该查询后,将返回所在周的周一日期和周日日期。

-- 当前周第一天
select date_sub(curdate(),INTERVAL WEEKDAY(curdate()) + 1 DAY)

-- 当前周最后一天
select date_sub(curdate(),INTERVAL WEEKDAY(curdate()) – 5 DAY)

SELECT 
    DATE_ADD(date, INTERVAL 1 - DAYOFWEEK(date) DAY) AS monday,
    DATE_ADD(date, INTERVAL DAYOFWEEK(date) - 1 DAY) AS sunday
FROM (SELECT '2023-06-07' AS date) AS t;


要查询给定日期所在周的周一日期和周日日期,你可以使用MySQL中的日期函数来实现。具体的SQL语句如下:

sql
Copy Code
SELECT 
    DATE_SUB('2023-06-07', INTERVAL (DAYOFWEEK('2023-06-07') - 2) DAY) AS Monday,
    DATE_ADD('2023-06-07', INTERVAL (8 - DAYOFWEEK('2023-06-07')) DAY) AS Sunday;
在这个SQL语句中,我们使用了DAYOFWEEK函数来获取给定日期的星期几(星期天为1,星期一为2,以此类推)。

然后,根据给定日期的星期几,通过计算和调整,我们可以获得所在周的周一日期和周日日期。对于周一日期,我们使用DATE_SUB函数将给定日期减去(星期几-2)天,得到上一个周一的日期;对于周日日期,我们使用DATE_ADD函数将给定日期加上(8-星期几)天,得到下一个周日的日期。

需要注意的是,上述SQL语句中的日期值是硬编码的,你可以根据实际情况替换成你想要查询的具体日期。