DB2中的sqlserver查询
全部,, 我有个问题。我有一个在SQLServerDB中运行良好的查询。要在DB2中运行同样的程序,需要做什么DB2中的sqlserver查询,db2,db2-400,Db2,Db2 400,全部,, 我有个问题。我有一个在SQLServerDB中运行良好的查询。要在DB2中运行同样的程序,需要做什么 SELECT EMPID ,TOTALSECONDS /3600 AS Hours ,((TOTALSECONDS % 3600) /60) AS Minutes ,(TOTALSECONDS % 60) AS Seconds ,STATUS ,[DATE] FROM (SELECT SUM(DATEDIFF
SELECT
EMPID
,TOTALSECONDS /3600 AS Hours
,((TOTALSECONDS % 3600) /60) AS Minutes
,(TOTALSECONDS % 60) AS Seconds
,STATUS
,[DATE]
FROM
(SELECT
SUM(DATEDIFF(ss,STARTDATETIME,ENDDATETIME)) AS TOTALSECONDS,
EMPID,STATUS,
CONVERT(VARCHAR,STARTDATETIME,10) AS [DATE]
FROM <TABLE>
WHERE CONVERT(DATE,STARTDATETIME) = 'xxxx-xx-xx'
GROUP BY EMPID,STATUS,CONVERT(VARCHAR,STARTDATETIME,10)) AS SUMMARY
ORDER BY STATUS,DATE
谢谢。您的问题是DB2没有DATEDIFF或CONVERT函数。也有类似的分别称为和 我认为这个查询将是您想要的,但我不能100%确定是否已将SQL Server格式正确地转换为DB2格式:
SELECT
EMPID
,TOTALSECONDS /3600 AS Hours
,(MOD(TOTALSECONDS, 3600) /60) AS Minutes
,(MOD(TOTALSECONDS, 60) AS Seconds
,STATUS
,DATE
FROM (
SELECT
SUM(TIMESTAMPDIFF(2, CHAR(ENDDATETIME-STARTDATETIME))) AS TOTALSECONDS
,EMPID
,STATUS
,VARCHAR_FORMAT(STARTDATETIME,'mm-dd-yy') AS DATE
FROM <TABLE>
WHERE VARCHAR_FORMAT(STARTDATETIME,'yyyy-mm-dd') = 'xxxx-xx-xx'
GROUP BY
EMPID
,STATUS
,VARCHAR_FORMAT(STARTDATETIME,'mm-dd-yy')
) A
ORDER BY
STATUS
,DATE
百分比是否相同。它在charracter%上的给定错误无效。哦,%不是DB2的模运算符,您需要该函数。我已经更新了答案。好的,问题解决了。但现在错误是发现了意外的[DATE]。但是date似乎是正确的DB2的正确转义字符是双引号,但我认为您实际上不需要它,您可以在DB2中调用列date而不必转义它。我再次更新了答案:非常感谢。实际上我把它改成了,DT而不是Date。。现在工作正常了。。更改了所有HRS、MTS、SDS和DT。非常感谢你的帮助。如果这是。。。您的时间戳不会附加时区。它们是否存储在UTC中?如果没有,存储时区是否经历DST?见鬼,你确定所有的时间戳都被规范化了,都在同一个区域吗?我在一个系统上工作过,那里的条目显然来自未来!?开始时间和结束时间的范围是多少?您是否需要担心DST发生的时间变化?我记不清确切时间,但我认为系统不会记住一个区域的多个DST转换日期。。。。