2016-05-16 47 views
0

我已經提取了兩列checkin_datebooking_time,如下所示。我怎樣才能得到這樣創建的兩列的差異?選擇查詢中提取的兩列的差異

SELECT CAST(CONCAT(MID(Checkin,7,4) , '-' 
    , MID(Checkin,1,2) , '-' 
    , MID(Checkin,4,2)) 
AS DATETIME) as Checkin_Date, 

CAST(CONCAT(MID(Book_Time,7,4) , '-' 
    , MID(Book_Time,1,2) , '-' 
    , MID(Book_Time,4,2)) 
AS DATETIME) as Booking_Date 

FROM rl_transactional.mydb 

我試過FROM rl_transactional.mydb之前做Checkin_Date - Booking_Date但我得到的錯誤

錯誤代碼:1064您的SQL語法錯誤;檢查對應於你的MySQL服務器版本使用附近的正確語法手冊「CHECKIN_DATE - Booking_Date FROM rl_transactional.mydb」 16行

編輯:根據建議,我用下面的查詢

SELECT CAST(CONCAT(MID(Checkin,7,4) , '-' 
    , MID(Checkin,1,2) , '-' 
    , MID(Checkin,4,2)) 
AS DATETIME) as Checkin_Date, 

CAST(CONCAT(MID(CheckOut,7,4) , '-' 
    , MID(CheckOut,1,2) , '-' 
    , MID(CheckOut,4,2)) 
AS DATETIME) as CheckOut_Date, 

CAST(CONCAT(MID(Book_Time,7,4) , '-' 
    , MID(Book_Time,1,2) , '-' 
    , MID(Book_Time,4,2)) 
AS DATETIME) as Booking_Date, 

Checkin_Date - Booking_Date 
from (
    SELECT CAST(CONCAT(MID(Checkin,7,4) , '-' 
     , MID(Checkin,1,2) , '-' 
     , MID(Checkin,4,2)) 
    AS DATETIME) as Checkin_Date, 
    CAST(CONCAT(MID(Book_Time,7,4) , '-' 
     , MID(Book_Time,1,2) , '-' 
     , MID(Book_Time,4,2)) 
    AS DATETIME) as Booking_Date 
    FROM rl_transactional.mydb 
) c, 
FROM rl_transactional.mydb 

我得到以下錯誤

錯誤代碼:1064您的SQL語法錯誤;檢查對應於你的MySQL服務器版本的權利 語法使用附近的 手冊 'CHECKIN_DATE - Booking_Date從(選擇 CAST(CONCAT(MID(簽入,7,4),' - ' 出現在1號線

+0

你把'Checkin_Date'前的逗號?但是,您應該針對Checkin和Book_Time運行DATEDIFF。可能你也需要把它們當作日期。 – LSerni

+0

@JaydipJ編輯一個雜亂的問題通常是一件很好的事情,但在這種情況下,可能有一個印刷錯誤,你可能會無意中糾正:-) –

+0

@TimBiegeleisen謝謝,我會照顧這個筆記:) –

回答

1

嘗試運行下面的查詢:

SELECT 
    c.Checkin_Date, 
    c.CheckOut_Date 
    c.Booking_Date, 
    c.Checkin_Date - c.Booking_Date 
from (
    SELECT CAST(CONCAT(MID(Checkin,7,4) , '-' 
     , MID(Checkin,1,2) , '-' 
     , MID(Checkin,4,2)) 
    AS DATETIME) as Checkin_Date, 
    CAST(CONCAT(MID(Book_Time,7,4) , '-' 
     , MID(Book_Time,1,2) , '-' 
     , MID(Book_Time,4,2)) 
    AS DATETIME) as Booking_Date, 
    CAST(CONCAT(MID(CheckOut,7,4) , '-' 
     , MID(CheckOut,1,2) , '-' 
     , MID(CheckOut,4,2)) 
    AS DATETIME) as CheckOut_Date 
    FROM rl_transactional.mydb 
) c; 
+0

我的目標是獲取所有3列。我如何獲得Checkin_Date和Booking_Date以及差異列? – Enthusiast

+0

@Enthusiast,只需選擇他們以及父母查詢 – mitkosoft

+0

我試着這樣做,它給了我新的錯誤。我用新的代碼和錯誤信息編輯了帖子。 – Enthusiast

1

,如果你想使用別名,你應該incapsulate查詢:

select Checkin_Date - Booking_Date from (
    SELECT CAST(CONCAT(MID(Checkin,7,4) , '-' 
     , MID(Checkin,1,2) , '-' 
     , MID(Checkin,4,2)) 
    AS DATETIME) as Checkin_Date, 
    CAST(CONCAT(MID(Book_Time,7,4) , '-' 
     ,MID(Book_Time,1,2) , '-' 
     , MID(Book_Time,4,2)) 
    AS DATETIME) as Booking_Date 
    FROM rl_transactional.mydb) 

編輯

你不能再在查詢中使用別名:

試試這個來代替:

SELECT 

Checkin_Date, 

CAST(CONCAT(MID(CheckOut,7,4) , '-' 
    , MID(CheckOut,1,2) , '-' 
    , MID(CheckOut,4,2)) 
AS DATETIME) as CheckOut_Date, 

Booking_Date, 

Checkin_Date - Booking_Date as Diff 

from (
    SELECT CAST(CONCAT(MID(Checkin,7,4) , '-' 
     , MID(Checkin,1,2) , '-' 
     , MID(Checkin,4,2)) 
    AS DATETIME) as Checkin_Date, 
    CAST(CONCAT(MID(Book_Time,7,4) , '-' 
     , MID(Book_Time,1,2) , '-' 
     , MID(Book_Time,4,2)) 
    AS DATETIME) as Booking_Date, 
    CheckOut 
    FROM rl_transactional.mydb 
) c 
+0

哎呀...遲到... –

+0

我做了一些操作,並最終出現了一個新的錯誤。你能幫忙嗎? – Enthusiast