我正在尝试运行以下查询:
SELECT
A.STEPNAME,
A.BRDATE BRDATE_A,
B.BRDATE BRDATE_B,
MIN(A.STARTTIME) STARTTIME_A,
MAX(A.ENDTIME) ENDTIME_A,
MIN(B.STARTTIME) STARTTIME_B,
MAX(B.ENDTIME) ENDTIME_B,
'RUNTIME_A' = convert(VARCHAR,DATEDIFF(MINUTE,A.STARTTIME,A.ENDTIME),108) ,
'RUNTIME_B' = convert(VARCHAR,DATEDIFF(MINUTE,B.STARTTIME,B.ENDTIME),108)
FROM
CB_OPX_AUDIT_HIST A,
CB_OPX_AUDIT_HIST B
WHERE
A.BRDATE = ('05/11/2012')
AND
B.BRDATE = ('05/16/2012')
AND
A.BR = '03'
AND
A.STEPNAME=B.STEPNAME
AND
A.BR=B.BR
GROUP BY
A.STEPNAME,
A.ENDTIME,
A.STARTTIME,
A.BRDATE,
B.BRDATE,
B.ENDTIME,
B.STARTTIME
ORDER BY
A.STARTTIME
我需要'RUNTIME_A'和'RUNTIME_B'之间的区别..
有人能告诉我如何在上述查询中找到差异。?
答案 0 :(得分:0)
将您的整个查询包含在另一个SELECT
语句中。在外部选择语句中,您只需选择RUNTIME_A - RUNTIME_B
。
答案 1 :(得分:0)
你究竟是什么意思“找到差异”?
你已经在几分钟内得到了差异,它总是不到一天吗?
这对你有什么用?
DATEADD(
minute,
DATEDIFF(minute, A.STARTTIME, A.ENDTIME)
-
DATEDIFF(minute, B.STARTTIME, B.ENDTIME),
0
)
或者...
CONVERT(
VARCHAR(8),
DATEADD(
minute,
DATEDIFF(minute, A.STARTTIME, A.ENDTIME)
-
DATEDIFF(minute, B.STARTTIME, B.ENDTIME),
0
),
108
)
答案 2 :(得分:0)
为简单起见,我建议只使用VARCHAR更改为使用DATETIME并再次运行一个简单的日期替换
DATEDIFF(MINUTE,
convert(DATETIME,DATEDIFF(MINUTE,A.STARTTIME,A.ENDTIME),108),
convert(DATETIME,DATEDIFF(MINUTE,B.STARTTIME,B.ENDTIME),108)
)
您可以将原始查询包装为子查询以简化操作。