Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql select查询中获取的两列的差异_Mysql_Sql - Fatal编程技术网

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没有解决方案做了一些操作,结果出现了新的错误。你能帮个忙吗?我做了一些操作,结果又出了一个新错误。你能帮忙吗?