![](/img/trans.png)
[英]How can I calculate the difference in days between two days stored as YYYYMMDD in a query?
[英]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.