回答

收藏

MYSQL添加最新工作日

技术问答 技术问答 299 人阅读 | 0 人回复 | 2023-09-14

我想在提供的日期上加上5天,但计算必须跳过周末。; n- `- E# C8 u
我已经知道如何添加5天而不跳过周末:
6 k! p, I+ Q) U+ m; T6 uSELECT DATE_ADD(`date_field`, INTERVAL 5 DAY) As FinalDate
  ^* ]6 ]/ ^6 {8 k! RFROM `table_name`;
8 k# ]) ]5 H4 ?9 X5 ?' J% b" a/ `现在,我希望返回的值跳过周末。
* |* T: p! Y) k8 k目前,如果date_field = 2016-07-22结果是,2016-07-27
% z9 C8 Z/ R; e) O+ w# |7 y$ k6 d$ E2 E但我希望结果是2016-07-29
. ^, M* T& |* B: b1 m# r% ~1 M4 b; Y                ( h! z/ [8 a! h! w
解决方案:
. n" P5 S- }; m                * D, w; m1 z, K( T4 g) V
# @: Y! i6 k. v

$ k7 {2 E" F" ~" `+ G1 N                试试这个:
$ W' S; V- G( U+ V% s& N5 }0 CSELECT DATE_ADD(: V2 r5 t0 [; L
    date_field,
" k3 p3 h$ m& Y. X4 ]) s    INTERVAL 5 +
  s% ]! ^, i) D; z6 M    IF(
% c0 W3 R+ ]4 |! l+ Y& g        (WEEK(date_field)  WEEK(DATE_ADD(date_field, INTERVAL 5 DAY)))- t) f) a( r( }! m6 ]9 s
        OR (WEEKDAY(DATE_ADD(date_field, INTERVAL 5 DAY)) IN (5, 6)),
$ `, P& E# e* Q        2,
' K1 P+ d! O" l' U, S0 u4 [        0)' a' o* T. s8 w! N
    DAY
/ p  U! w. v! D+ P3 {( k8 G1 d# H. A! n    ) AS FinalDate
- d4 K# w  H: R6 @/ h1 @; aFROM `table_name`;
- l1 Q7 O) p" X# ]7 U/ [: a5 ]  I怎么运行的:% c$ j* ^5 L: S+ G- V: t& t
首先,它将在您的约会上增加5天。6 y  i$ F) n, k# b* V, x
其次,当date_field和5天后分别在两个星期内时,必须再添加2天。
0 s6 u3 X3 J4 X6 }+ u. e. f5 n% k第三,当5天后为Sat或时Sun,必须再添加2天。, r+ K; k( Q3 W; g2 D0 ]
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则