【问题标题】:Order by time for sysdate按时间排序 sysdate
【发布时间】:2013-08-09 08:23:00
【问题描述】:

我有这样显示的日期:

这就是它的工作原理,用户填写表单,当他单击提交按钮时,我使用程序将数据保存在我的数据库中,然后添加 sysdate 以便为每个提交的表单创建一个 ID。所以我用 DATE_ID = sysdate 做了一个 INSERT TO。然后我在管理页面上显示所有提交的表单。我想用 sysdate 提供的日期显示时间,所以我制作了 TO_CHAR。一组项目 = 一次提交。

这是我显示 sysdate 的方式:

select to_char(DATE_ID, 'DD/MM/YYYY HH24:MI:SS') as DATE_ID

并订购它

ORDER BY DATE_ID DESC;

我如何订购日期和时间?

【问题讨论】:

  • 问题似乎是你改变了DATE_ID 的含义。也许select to_char(DATE_ID, 'DD/MM/YYYY HH24:MI:SS') as DATE_ID, DATE_ID AS DUMMY ... ORDER BY DUMMY DESC?
  • 我写的,那行不通
  • 一天之内你正在做的事情应该会奏效;如果数据在几天内(尤其是几个月)分裂,那么 Joachim 的方法会更安全。那么,您对查询结果做了什么 - 您的应用程序是否在显示之前对它们进行了重新排序?它似乎正在生成每秒间隔,并且可能正在对这些间隔本身进行排序? (不确定这与sysdate 有什么关系)。
  • @AlexPoole 我的应用程序是一个表单,当用户提交表单时,我使用 sysdate 捕获提交的日期+时间。问题是 sysdate 不显示时间。对于每组项目,都进行了提交(当有 2 个项目时,项目同时发送,单击提交)。因此,为了在管理页面中重新排列它,我使用 to_char 添加时间。我想先显示较新的提交
  • 好的,但是表单如何将您的查询结果转换为实际显示的内容、项目组以及按日期/时间排序的组本身?似乎表单中必须有一些东西正在重新排列事物并忽略数据返回的顺序(通过order by 子句)。您可以通过在查询中按不同的内容进行排序并查看它是否会影响显示顺序来判断是否是这种情况。

标签: javascript oracle extjs sysdate


【解决方案1】:

我认为您的意思是按存储的日期/时间值而不是转换后的字符值进行排序,因此只需在 ORDER BY 中为该列添加表别名前缀:

SELECT to_char(DATE_ID, 'DD/MM/YYYY HH24:MI:SS') as DATE_ID
FROM some_table tbl
ORDER BY tbl.DATE_ID DESC;

【讨论】:

    【解决方案2】:

    使用不等于实际列名的别名。那么你的代码应该可以工作了。

    【讨论】:

      猜你喜欢
      • 2018-10-05
      • 2016-01-15
      • 2011-02-24
      • 2014-10-03
      • 1970-01-01
      • 1970-01-01
      • 2018-08-10
      • 2018-03-02
      • 2012-10-18
      相关资源
      最近更新 更多