Mysql select查询中获取的两列的差异
我获取了两列Mysql select查询中获取的两列的差异,mysql,sql,Mysql,Sql,我获取了两列checkin\u date和booking\u 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) , '-'
checkin\u date
和booking\u 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
在从rl\u transactional.mydb执行之前,我尝试执行签入日期-预订日期
,但出现错误
错误代码:1064。您的SQL语法有错误;查看与MySQL服务器版本相对应的手册,了解第16行“Checkin_Date-Booking_Date FROM rl_transactional.mydb”附近使用的正确语法
编辑:根据建议,我使用了下面的查询
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服务器版本相对应的手册
使用“签入日期-预订日期自”附近的语法(选择
在第1行铸造(混凝土(中间)(签入,7,4),“-”
尝试运行以下查询:
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;
尝试运行以下查询:
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;
如果要使用别名,应将查询压缩为:
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 - 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
如果要使用别名,应将查询压缩为:
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 - 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
您是否在签入日期之前加了逗号?但是,您应该在签入和预订时间之间运行DATEDIFF。您可能还需要将这些日期转换为日期。@JaydipJ编辑一个混乱的问题通常是一件好事,但在这种情况下,可能会有一个您可能无意中更正的印刷错误:-)@TimBiegeleisen谢谢,我会处理好这张纸条:)您是否在签入日期之前加了逗号?但是,您应该在签入和预订时间之间运行DATEDIFF。您可能还需要将这些日期转换为日期。@JaydipJ编辑一个混乱的问题通常是一件好事,但在这种情况下,可能会有一个您可能无意中更正的印刷错误:-)@TimBiegeleisen谢谢,我会处理这张便条:)我的目标是获取所有3列。我怎样才能在差异栏中获得签入日期和预订日期?@发烧友,只需在家长查询中选择它们。我尝试过这样做,但它给了我新的错误。我用新的代码和错误信息编辑了这篇文章。我的目标是获取所有3列。我怎样才能在差异栏中获得签入日期和预订日期?@发烧友,只需在家长查询中选择它们。我尝试过这样做,但它给了我新的错误。我用新的代码和错误信息编辑了这篇文章。sighti没有解决方案做了一些操作,结果出现了新的错误。你能帮个忙吗?我做了一些操作,结果又出了一个新错误。你能帮忙吗?