国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > MySQL > 正文

MySQL查詢不含周末的五天前的日期

2019-09-08 23:27:03
字體:
來源:轉載
供稿:網友

我需要查詢從現在算起五天前的日期。按照商業習慣,這五天應該不包含星期六和星期天。

專家回答:

對于許多跟商業日期有關的情況,最好的解決方案是使用日歷表格。例如,使用辦公時間(2001年5月22日)查詢兩個日期之間的時間差。

我們知道在這個例子中,假日不會計算在內。很難明白為什么假日不被計算在內,但是周末卻會被計算在內。但是既然假日不被計算在內,我們就可以應用一個公式。要開發這個公式,讓我們首先探討一下所有的可能性。

如果今天是星期一,那么,往回數,我們跳過星期天和星期六,星期五是一天前,星期四是兩天前,如此類推,那么“五天前”就是上個星期一。這里的“五天前”就意味著把周末排除出去,得出我們想要的日期,并不是真正字面意義上的五天前。我們可以從備忘錄上看到差別。

如果今天是星期二,那么,往回數,星期一是一天前,跳過星期天和星期六,星期五是兩天前,星期四是三天前,如此類推,那么“五天前”就是上個星期二。

這個模式——“五天前”就是上一個星期的同一天(星期X)——可重復到星期三、星期四和星期五。

到了星期六,這個模式就不可用了。在星期六,五天前是星期一。在星期天,因為我們不計算星期六,五天前也是星期一。

把我們的討論發現總結成如下數據:

MySQL查詢不含周末的五天前的日期

要獲得“五天前”的日期,從今天減去的總天數(包括周末)顯示在右邊列中。

我們給一個星期里的每一天排上序號,星期天(Sunday)=1,星期一(Monday)=2,如此類推,到星期六(Saturday)=7。把這些日子的序號排列在需要減去的天數前,我們會得到如下數據:

if today is

weekday subtract

Monday

2 7

Tuesday

3 7
Wednesday 4 7

Thursday

5 7

Friday

6 7

Saturday

7 5

Sunday

1 6

公式如下:

subtract = 7 - 2*(weekday/7) + (weekday-2)/7

記住,這是要獲得“五天前”的日期而需要從今天減去的天數。在這個公式里,除法是整數除法(即下舍入)。請不要問我這個公式是怎么發現的,反正是試差法的成果。

我們要怎么把這個公式應用到SQL里呢?下面是一個運用MySQL句法的例子:

以下為引用的內容:

selectdistinct 
   cust.fname
  ,cust.lname
  ,cust.phone
 fromordersaso
inner
 joincustomersascust
  oncust.id=orders.cust_id
whereo.date_ordered=
   date_sub(current_date
       ,interval
   7-2*floor(dayofweek(current_date)/7)
    +floor((dayofweek(current_date)-2)/7)
          day)
 ando.date_shippedisnull

這個查詢可以獲得“五天前”下訂單而貨還沒有運到的客戶的聯系方式。

MYSQL

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 大英县| 确山县| 仁寿县| 濉溪县| 深水埗区| 察哈| 冕宁县| 重庆市| 勐海县| 乐都县| 秦皇岛市| 玉门市| 军事| 邯郸市| 哈巴河县| 海口市| 米泉市| 清苑县| 怀来县| 南皮县| 塔城市| 会昌县| 葫芦岛市| 托克逊县| 长子县| 桑植县| 米脂县| 昔阳县| 鸡泽县| 饶阳县| 白沙| 汾西县| 斗六市| 民丰县| 敦煌市| 弋阳县| 昌黎县| 仙居县| 信宜市| 绥德县| 子长县|