SQL使用静态日期

时间:2016-04-20 07:17:22

标签: sql-server datetime datediff

我正在其他人安装的系统上编写查询,因此这里无法更改表。

问题: 我有一张表,我有Date,timeIN和timeOUT 采取以下记录;

     date               |       timeIN      | timerOUT
-------------------------------------------------
2016-01-01 00:00:00.00  | 2000-01-01 07:00  | 2000-01-01 15:00       DATEDIFF = 8H
2016-01-02 00:00:00.00  | 2000-01-01 07:00  | 2000-01-01 15:00       DATEDIFF = 8H
2016-01-05 00:00:00.00  | 2000-01-01 23:00  | 2000-01-01 07:00       DATEDIFF = -16H

如何从3号记录中获得DATEDIFF = 8H? 这里的问题是所有timeIN和timeOUT标记都具有相同的虚拟日期。

1 个答案:

答案 0 :(得分:4)

您可以在CASE函数中使用DATEDIFF表达式:

SELECT
    Diff = 
        DATEDIFF(
            HOUR, 
            timeIn, 
            CASE 
                WHEN timeOut < timeIn THEN DATEADD(DAY, 1, timeOut) 
                ELSE timeOut 
            END
        )
FROM tbl

如果timeOut小于timeIn,则会在import paramiko client = paramiko.SSHClient() client.set_missing_host_key_policy(paramiko.AutoAddPolicy()) client.connect("1.1.1.1", username="root", password="pass") stdin, stdout, stderr = client.exec_command("service XXX start") 上添加一天。