国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

mysql 當(dāng)前時(shí)間加3個(gè)工作日

這篇具有很好參考價(jià)值的文章主要介紹了mysql 當(dāng)前時(shí)間加3個(gè)工作日。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

1. 問題描述:

在日常工作中可能會(huì)遇到計(jì)算工作日的情況

2. 解決過程

(1) 首先制作一個(gè)假日表?holiday_config

CREATE TABLE `holiday_config` (
  `id` int(10) NOT NULL AUTO_INCREMENT,
  `holiday` varchar(8) DEFAULT NULL,
  PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC

其中id 為主鍵自增,holiday 為假期 格式為 '%Y-%m-%d'?

工作日:即不在?holiday_config 表中的數(shù)據(jù)

a. 增加的三天是否為假日,可能出現(xiàn)的情況有一下四種

????????情況1 :??如果無假日,則直接在原數(shù)據(jù)的基礎(chǔ)上加三天即可,使用date_add(now(),interval 3 DAY);

????????情況2:? ?增加的三天存在假日且小于3 那么直接用??date_add(now(),interval 3+(小于3的數(shù)) DAY); ??

????????情況3:??增加的三天存在假日且等于3 那么直接用??date_add(now(),interval 3+3 DAY); ??

????????情況4:??增加的三天存在假日且大于3 那么直接用??date_add(now(),interval 3+(大于3的數(shù)) DAY);

b. 如何獲取范圍內(nèi)的假日數(shù)

假日數(shù)小于3 的情況

(SELECT COUNT(1)
? ? ? ? ?FROM holiday_config
? ? ? ? ?WHERE holiday BETWEEN now() AND DATE_ADD(now(), INTERVAL 3 DAY)
?)

大于3 的情況可能有多種,目前只考慮連續(xù)假日小于等于10 的情況(具體看下方腳本)

(2) 最終結(jié)果

SELECT
    DATE_ADD(
        now(),
        INTERVAL 3 +
        case when   (SELECT COUNT(1)
         FROM holiday_config
         WHERE holiday BETWEEN DATE_ADD(now(),INTERVAL 1 DAY) AND DATE_ADD(now(), INTERVAL 3 DAY)
         )<3
        then (SELECT COUNT(1)
         FROM holiday_config
         WHERE holiday BETWEEN DATE_ADD(now(),INTERVAL 1 DAY) AND DATE_ADD(now(), INTERVAL 3 DAY)
         )
         when (SELECT COUNT(1)
         FROM holiday_config
         WHERE holiday BETWEEN DATE_ADD(now(),INTERVAL 1 DAY) AND DATE_ADD(now(), INTERVAL 4 DAY)
         )<4
         then (SELECT COUNT(1)
         FROM holiday_config
         WHERE holiday BETWEEN DATE_ADD(now(),INTERVAL 1 DAY) AND DATE_ADD(now(), INTERVAL 4 DAY)
         )
         when (SELECT COUNT(1)
         FROM holiday_config
         WHERE holiday BETWEEN DATE_ADD(now() AND DATE_ADD(now(), INTERVAL 5 DAY)
         )<5
         then (SELECT COUNT(1)
         FROM holiday_config
         WHERE holiday BETWEEN DATE_ADD(now(),INTERVAL 1 DAY) AND DATE_ADD(now(), INTERVAL 5 DAY)
         )
         when (SELECT COUNT(1)
         FROM holiday_config
         WHERE holiday BETWEEN DATE_ADD(now(),INTERVAL 1 DAY) AND DATE_ADD(now(), INTERVAL 6 DAY)
         )<6
         then (SELECT COUNT(1)
         FROM holiday_config
         WHERE holiday BETWEEN DATE_ADD(now(),INTERVAL 1 DAY) AND DATE_ADD(now(), INTERVAL 6 DAY)
         )
         when (SELECT COUNT(1)
         FROM holiday_config
         WHERE holiday BETWEEN DATE_ADD(now(),INTERVAL 1 DAY) AND DATE_ADD(now(), INTERVAL 7 DAY)
         )<7
         then (SELECT COUNT(1)
         FROM holiday_config
         WHERE holiday BETWEEN DATE_ADD(now(),INTERVAL 1 DAY) AND DATE_ADD(now(), INTERVAL 7 DAY)
         )
         when (SELECT COUNT(1)
         FROM holiday_config
         WHERE holiday BETWEEN DATE_ADD(now(),INTERVAL 1 DAY) AND DATE_ADD(now(), INTERVAL 8 DAY)
         )<8
         then (SELECT COUNT(1)
         FROM holiday_config
         WHERE holiday BETWEEN DATE_ADD(now(),INTERVAL 1 DAY) AND DATE_ADD(now(), INTERVAL 8 DAY)
         )
         when (SELECT COUNT(1)
         FROM holiday_config
         WHERE holiday BETWEEN DATE_ADD(now(),INTERVAL 1 DAY) AND DATE_ADD(now(), INTERVAL 9 DAY)
         )<9
         then (SELECT COUNT(1)
         FROM holiday_config
         WHERE holiday BETWEEN DATE_ADD(now(),INTERVAL 1 DAY) AND DATE_ADD(now(), INTERVAL 9 DAY)
         )
         when (SELECT COUNT(1)
         FROM holiday_config
         WHERE holiday BETWEEN DATE_ADD(now(),INTERVAL 1 DAY) AND DATE_ADD(now(), INTERVAL 10 DAY)
         )<10
         then (SELECT COUNT(1)
         FROM holiday_config
         WHERE holiday BETWEEN DATE_ADD(now(),INTERVAL 1 DAY) AND DATE_ADD(now(), INTERVAL 10 DAY)
         )
            end
        DAY
    ) AS target_date;

3. 備注

目前只考慮連續(xù)假日小于等于10 的情況,如有問題請(qǐng)聯(lián)系。文章來源地址http://www.zghlxwxcb.cn/news/detail-758805.html

到了這里,關(guān)于mysql 當(dāng)前時(shí)間加3個(gè)工作日的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包