2016-05-16 15 views
0

ich geholt habe zwei Spalten checkin_date und booking_time wie folgt. Wie kann ich den Unterschied zweier so erstellter Spalten erhalten?Differenz von zwei Spalten geholt in Auswahlabfrage

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 

Ich versuchte Checkin_Date - Booking_Date vor dem FROM rl_transactional.mydb tun, aber ich habe Fehler

Fehlercode: 1064. Sie haben einen Fehler in Ihrer SQL-Syntax; Sie in der Bedienungsanleitung für die richtige Syntax verwenden in der Nähe Ihrer MySQL-Server-Version entspricht ‚Checkin_Date - Booking_Date VON rl_transactional.mydb‘ in Zeile 16

bearbeiten: Basierend auf Anregung verwendet i unten Abfrage

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 

ich erhalte unten Fehler

Fehlercode: 1064. Sie haben einen Fehler in Ihrer SQL-Syntax; überprüfen Sie die Handbuch, das für die richtige Syntax verwenden in der Nähe Ihrer MySQL-Server-Version entspricht 'Checkin_Date - Booking_Date aus (SELECT CAST (CONCAT (MID (Checkin, 7,4), '-'' in Zeile 1

+0

Haben setzen Sie ein Komma vor 'Checkin_Date'? Sie sollten DATEDIFF jedoch gegen Checkin und Book_Time ausführen. Möglicherweise müssen Sie diese auch als Datum einstreuen. – LSerni

+0

@JaydipJ eine schmutzige Frage bearbeiten ist in der Regel eine nette Sache zu tun, aber in diesem Fall kann einen Druckfehler, die Sie könnten versehentlich richtig :-) –

+0

@TimBiegeleisen Danke, ich Pflege dieser Notiz nehmen :) –

Antwort

1

Versuchen Sie, die folgende Abfrage ausführen:

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

mein Ziel ist es, alle 3 Spalten zu holen. Wie kann ich Checkin_Date und Booking_Date zusammen mit der Differenzspalte bekommen? – Enthusiast

+0

@Enthusiast, nur wählen Sie sie auch in Parent-Abfrage – mitkosoft

+0

ich versuchte, das und es gibt mir einen neuen Fehler. Ich habe den Beitrag mit neuem Code und Fehlermeldung bearbeitet. – Enthusiast

1

, wenn Sie möchten, um die Aliasnamen verwenden, sollten Sie incapsulate die Abfrage:

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) 

bearbeiten

Sie können nicht wiederverwenden einen Alias ​​in der Abfrage:

versuchen diese stattdessen:

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

oops ... kam spät an ... –

+0

Ich habe etwas manipuliert und endete mit einem neuen Fehler. Kannst du bitte helfen? – Enthusiast

Verwandte Themen