mysql-sql计算

1.计算某个时间的上一周开始和结束时间

select
    DATE_FORMAT(xx.start, '%Y-%m-%d') as startTime,
    DATE_FORMAT(ADDDATE(xx.start, 6), '%Y-%m-%d') as
endTime
from
(
select
    ADDDATE(jan1, (t.week - WEEK(jan1, 5)) * 7 - WEEKDAY(jan1)) as start,
    year,
    WEEK
from
    (
    select
        MAKEDATE((
        select
            SUBSTR(DATE_SUB(SUBSTR(STR_TO_DATE('2020-11-01', '%Y-%m-%d'), 1, 10), interval 1 WEEK), 1, 4)), 1) as jan1,
        SUBSTR(DATE_SUB(SUBSTR(STR_TO_DATE('2020-11-01', '%Y-%m-%d'), 1, 10), interval 1 WEEK), 1, 4) as year,
        WEEKOFYEAR(DATE_SUB(STR_TO_DATE('2020-11-01', '%Y-%m-%d') , interval 1 WEEK)) as WEEK) t )xx

 

 

2.计算某个时间的上一周开始到结束时间

 

 

SELECT 
    date_format(lastWeek.`timeDay`,'%Y-%m-%d') as 'timeDay' 
FROM (
    select DATE_SUB(NOW(),interval 13 day) as 'timeDay'
    UNION ALL 
    select DATE_SUB(NOW(),interval 12 day) as 'timeDay'
    UNION ALL 
    select DATE_SUB(NOW(),interval 11 day) as 'timeDay'
    UNION ALL 
    select DATE_SUB(NOW(),interval 10 day) as 'timeDay'
    UNION ALL 
    select DATE_SUB(NOW(),interval 9 day) as 'timeDay'
    UNION ALL 
    select DATE_SUB(NOW(),interval 8 day) as 'timeDay'
    UNION ALL 
    select DATE_SUB(NOW(),interval 7 day) as 'timeDay'
    UNION ALL 
    select DATE_SUB(NOW(),interval 6 day) as 'timeDay'
    UNION ALL 
    select DATE_SUB(NOW(),interval 5 day) as 'timeDay'
    UNION ALL 
    select DATE_SUB(NOW(),interval 4 day) as 'timeDay'
    UNION ALL 
    select DATE_SUB(NOW(),interval 3 day) as 'timeDay'
    UNION ALL 
    select DATE_SUB(NOW(),interval 2 day) as 'timeDay'
    UNION ALL 
    select DATE_SUB(NOW(),interval 1 day) as 'timeDay'
) as lastWeek 
WHERE YEARWEEK(lastWeek.`timeDay`,1) = YEARWEEK(NOW(),1)-1

 

posted @ 2020-11-05 21:17  林被熊烟岛  阅读(198)  评论(0编辑  收藏  举报