簡體   English   中英

如何計算db2中兩個日期列之間的天數? 如何更正此查詢中的天數差異?

[英]How to calculate days between two date columns in db2?? how do i correct the difference of days in this query?

我的查詢:

SELECT CD1
, OD1
,CHAR(DATE(SUBSTR(CHAR(CD1),1,4) ||'-'||
    SUBSTR(CHAR(CD1),5,2) ||'-'||
   SUBSTR(CHAR(CD1),7,2)), USA)
AS "CDate_Conversion"
,CHAR(DATE(SUBSTR(CHAR(OD1),1,4) ||'-'||
    SUBSTR(CHAR(OD1),5,2) ||'-'||
   SUBSTR(CHAR(OD1),7,2)), USA)
AS "OConv"

, CD1-OD1 AS Days

FROM PDAT.ZPKD

輸出:

Crt Date Date Ordered CDate_Conversion OConv    DAYS
20171201    20171130    12/01/2017  11/30/2017  71
20171003    20170929    10/03/2017  09/29/2017  74
20171009    20170908    10/09/2017  09/08/2017  101
20171009    20170921    10/09/2017  09/21/2017  88
20171002    20170929    10/02/2017  09/29/2017  73
20171009    20171006    10/09/2017  10/06/2017  3
20181010    20181010    10/10/2018  10/10/2018  0
20180723    20180723    07/23/2018  07/23/2018  0
20180710    20180709    07/10/2018  07/09/2018  1
20181010    20181009    10/10/2018  10/09/2018  1
20180831    20180830    08/31/2018  08/30/2018  1
20180827    20180814    08/27/2018  08/14/2018  13
20180828    20180827    08/28/2018  08/27/2018  1
20180403    20180403    04/03/2018  04/03/2018  0
20180405    20180403    04/05/2018  04/03/2018  2
20180820    20180820    08/20/2018  08/20/2018  0
20180920    20180919    09/20/2018  09/19/2018  1
20180305    20180305    03/05/2018  03/05/2018  0
20180306    20180305    03/06/2018  03/05/2018  1

前5行中的天數差異不正確。

另外,我不確定如何找到轉換后列的天差,所以我選擇了CTD-OTD!

而且OTD沒有時間列,因此不能使用TIMESTAMPDIFF。

注意:我隨機選擇了天數錯誤的行以在此處顯示resuly = ts。

你近了 使用DAYS()函數為每個日期計算一個整數,然后減去它們。

查詢應如下所示:

SELECT CD1
, OD1
,CHAR(DATE(SUBSTR(CHAR(CD1),1,4) ||'-'||
    SUBSTR(CHAR(CD1),5,2) ||'-'||
   SUBSTR(CHAR(CD1),7,2)), USA)
AS "CDate_Conversion"
,CHAR(DATE(SUBSTR(CHAR(OD1),1,4) ||'-'||
    SUBSTR(CHAR(OD1),5,2) ||'-'||
   SUBSTR(CHAR(OD1),7,2)), USA)
AS "OConv",

( DAYS(DATE(
    SUBSTR(CHAR(CD1),1,4) ||'-'||
    SUBSTR(CHAR(CD1),5,2) ||'-'||
    SUBSTR(CHAR(CD1),7,2)), USA)
 -
  DAYS(DATE(
    SUBSTR(CHAR(OD1),1,4) ||'-'||
    SUBSTR(CHAR(OD1),5,2) ||'-'||
    SUBSTR(CHAR(OD1),7,2)), USA)
) AS Days

FROM PDAT.ZPKD

@Aryana像這樣寫,它更具可讀性:

SELECT (Days(TO_DATE(Char(CD1), 'YYYYMMDD')) -
        Days(TO_DATE(Char(OD1), 'YYYYMMDD')) ) AS Days
FROM PDAT.ZPKD  

TO_DATE是一個非常強大的功能。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM