table.DateTime_From | table.DateTime_To
-----------------------------|--------------------------------
01/05/2001 00:00:00 | 01/05/2001 08:00:00
01/05/2001 08:00:00 | 01/05/2001 18:00:00
01/05/2001 18:00:00 | 01/05/2001 00:00:00
03/05/2001 00:00:00 | 03/05/2001 12:00:00
03/05/2001 12:00:00 | 03/05/2001 15:00:00
03/05/2001 15:00:00 | 03/05/2001 00:00:00
07/05/2001 00:00:00 | 07/05/2001 00:00:00
06/05/2001 00:00:00 | 06/05/2001 00:00:00
05/06/2001 00:00:00 | 05/06/2001 00:00:00
07/06/2001 00:00:00 | 07/06/2001 11:00:00
07/06/2001 11:00:00 | 07/06/2001 14:00:00
07/06/2001 14:00:00 | 07/06/2001 00:00:00
上表包含以下属性:
table.DateTime_From
< = table.DateTime_To
。24:00:00
遗憾地有时表示为00:00:00
,例如比较table 2
和table 3
- 这是无法更改的,因此更改此内容甚至不是一种选择。00:00:00
和table.DateTime_From
下都有时间值table.DateTime_To
,例如见table 4
。table.DateTime_From | table.DateTime_To
-----------------------------|--------------------------------
01/05/2001 18:00:00 | 01/05/2001 00:00:00
table.DateTime_From | table.DateTime_To
-----------------------------|--------------------------------
01/05/2001 18:00:00 | 01/05/2001 24:00:00
table.DateTime_From | table.DateTime_To
-----------------------------|--------------------------------
07/05/2001 00:00:00 | 07/05/2001 00:00:00
使用MIN (table.DateTime_From)
可获得01/05/2001 00:00:00
尝试使用MAX (table.DateTime_To)
会产生问题,因为这会产生07/06/2001 14:00:00
- 尽管这实际上应该是07/06/2001 00:00:00
,即07/06/2001 24:00:00
。
07/06/2001 24:00:00
表示为07/06/2001 00:00:00
- 因此使用MAX (table.DateTime_From)
时出现问题。是否可以解决使用MAX (table.DateTime_From)
时遇到的问题,以便我能够获得07/06/2001 00:00:00
- 即使07/06/2001 24:00:00
代表性很差
或者是否有一些我不理解的基本细节......
答案 0 :(得分:1)
为什么不创建一个类似于此的视图(在SQL Server方言中)
SELECT table.DateTime_From
, table.DateTime_To
, CASE
WHEN DATEPART(table.DateTime_From, hour) = 0
AND DATEPART(table.DateTime_From, minute) = 0
AND DATEPART(table.DateTime_From, second) = 0
THEN DATEADD(day, 1, table.DateTime_From)
ELSE table.DateTime_From
END AS DateTime_From_Corrected
, CASE
WHEN DATEPART(table.DateTime_To, hour) = 0
AND DATEPART(table.DateTime_To, minute) = 0
AND DATEPART(table.DateTime_To, second) = 0
THEN DATEADD(day, 1, table.DateTime_To)
ELSE table.DateTime_To
END AS DateTime_To_Corrected
FROM MyData table
然后您可以在查询中使用Corrected
列?