对包含带时区的时间戳的数据 table 列进行排序
sorting a data table column containing timestamp with time zone
我有一个使用 Oracle 11g 查询填充的网格,该查询 returns TIMESTAMP(6) WITH TIME ZONE 字段以及其他字段。
当我 select 显示从 12/26/2014 到 1/5/2015 的数据日期范围,然后尝试按此列(升序或降序)排序时,排序不正确。例如,按降序显示从 01/01 到 01/05,然后从 12/26 到 12/31。看起来像字符串排序。
我猜测包含 21-JAN-2015 18:17:16:00000 USA/EASTERN 之类值的 TIMESTAMP(6) WITH TIME ZONE 字段未被识别为日期时间,而是一个字符串。有什么办法可以解决这个问题吗?
将评论变成答案:
有多个选项:
(i) 依靠数据库对数据进行正确排序——出于性能原因,您可能希望避免这种情况。
(ii) 指示网格按原样处理时间戳列(而不是字符串列)——这可能是不可能的。
(iia) 使用不同的网格组件,它可以正确处理日期列。
(iii) 使用时间戳格式为 'YYYY-MM-DD HH24…' 的隐藏(字符串)列进行排序。
(iv) 编写自己的排序例程。
如果您认为合适,请随时提供更多详细信息。
我有一个使用 Oracle 11g 查询填充的网格,该查询 returns TIMESTAMP(6) WITH TIME ZONE 字段以及其他字段。 当我 select 显示从 12/26/2014 到 1/5/2015 的数据日期范围,然后尝试按此列(升序或降序)排序时,排序不正确。例如,按降序显示从 01/01 到 01/05,然后从 12/26 到 12/31。看起来像字符串排序。
我猜测包含 21-JAN-2015 18:17:16:00000 USA/EASTERN 之类值的 TIMESTAMP(6) WITH TIME ZONE 字段未被识别为日期时间,而是一个字符串。有什么办法可以解决这个问题吗?
将评论变成答案:
有多个选项:
(i) 依靠数据库对数据进行正确排序——出于性能原因,您可能希望避免这种情况。
(ii) 指示网格按原样处理时间戳列(而不是字符串列)——这可能是不可能的。
(iia) 使用不同的网格组件,它可以正确处理日期列。
(iii) 使用时间戳格式为 'YYYY-MM-DD HH24…' 的隐藏(字符串)列进行排序。
(iv) 编写自己的排序例程。
如果您认为合适,请随时提供更多详细信息。