国产探花免费观看_亚洲丰满少妇自慰呻吟_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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 任丘市| 高州市| SHOW| 阿克苏市| 东乡县| 赞皇县| 弥勒县| 汤阴县| 思南县| 宝鸡市| 吴忠市| 和硕县| 宁海县| 华蓥市| 衡水市| 天气| 青河县| 重庆市| 长泰县| 彭山县| 普兰县| 河北省| 通许县| 崇州市| 新野县| 江永县| 密云县| 通榆县| 江川县| 景洪市| 孟津县| 安阳市| 莫力| 丁青县| 泸水县| 河南省| 榆社县| 冀州市| 新乡市| 铅山县| 长沙县|