【问题标题】:SQL DATEDIFF for clock positions用于时钟位置的 SQL DATEDIFF
【发布时间】:2016-04-11 02:13:06
【问题描述】:

我需要计算时间之间的时钟位置(小时)数。

数据库有列 (Clock_At_From, Clock_To)

具有如下值:

10, 2
6, 9

我使用这个 sql 查询来获取两次之间的小时数。

SELECT DATEDIFF("h", "2005-05-05" + str(c.Clock_At_From) + ":00:00", "2005-05-05" + str(c.Clock_To) + ":00:00")   
FROM [Conditions] as c

“2005-05-05”和“:00:00”只是一个占位符,我只关心小时数。

这种方法有效。但是当数字是:

10, 2

返回 -8

如果数字为负数,我需要一些东西,将值加 12。我该怎么做?

使用 MS-Access

【问题讨论】:

  • 不需要DateDiff,用IIf判断第一个数是否大于第二个,然后加12。另外,如果输入的是1和2,怎么知道是不是那是凌晨 1 点到凌晨 2 点或凌晨 1 点到下午 2 点,反之亦然?
  • @Rabbit 它更多的是角度而不是时间。就像飞行员在 2 点钟说柏忌一样,他们指的是一个位置,而不是一天中的实际时间。

标签: sql ms-access datediff


【解决方案1】:

你可以这样写查询。这个例子写了24小时。

SELECT IIF(clock_to - clock_at_from < 0, 
           24 - (clock_at_from - clock_to),
           clock_to - clock_at_from) AS diff
FROM Conditions

【讨论】:

    猜你喜欢
    • 2019-05-08
    • 2014-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-27
    • 1970-01-01
    相关资源
    最近更新 更多