【发布时间】:2012-06-20 16:47:37
【问题描述】:
样本数据
表 1
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_Fromtable.DateTime_To。 - 可悲的是,时间值
24:00:00有时表示为00:00:00,例如比较table 2和table 3- 这不能更改,因此更改它甚至不是一个选项。 - 单个记录有时在
table.DateTime_From和table.DateTime_To下都有时间值00:00:00,例如见table 4。
表 2
table.DateTime_From | table.DateTime_To
-----------------------------|--------------------------------
01/05/2001 18:00:00 | 01/05/2001 00:00:00
表 3
table.DateTime_From | table.DateTime_To
-----------------------------|--------------------------------
01/05/2001 18:00:00 | 01/05/2001 24:00:00
表 4
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的表示非常差。 或者这里有一些我不理解的基本细节......
【问题讨论】:
-
您是否将时间戳存储为字符串?您无法有意义地比较这些日期,因为
31/01/2001会比01/12/2001“更大”。 -
时间戳不是字符串。时间戳存在于专门定义为 SQL Server 表上的日期时间值的字段中。
-
此外,服务管理系统 (SMS) 正在使用该表,因此更改表甚至不是一个选项 - 假设出现。 SMS 非常善变,因此我通常倾向于“仅”从中读取数据……然后尝试使用 SQL 来处理选定的数据。
-
24:00:00 不是有效的日期时间。 SQL Server 日期时间部分从 00:00:00 到 23:59:59.997。
-
时间戳
24:00:00包含在说明中,只是为了帮助人们理解00:00:00在表格中的另一个上下文中的含义。
标签: sql sql-server-2008 tsql crystal-reports-2008