我正在寻找一种方法来找到填充有 CURRENT_TIMESTAMP 的列的可排序替代方案,我现在很难过。
我有一个基于 Web 的表单,其中包含多个字段,包括一个隐藏在表单上的字段,该字段在提交表单时将 CURRENT_TIMESTAMP 写入数据库。
我面临的挑战是我想从这些表单创建报告(按月、周或年排序)并按时间戳对它们进行排序,但根据我在这里看到的内容,排序是不可能的。
有没有我可以用来实现我想要的结果的替代方法?
我正在寻找一种方法来找到填充有 CURRENT_TIMESTAMP 的列的可排序替代方案,我现在很难过。
我有一个基于 Web 的表单,其中包含多个字段,包括一个隐藏在表单上的字段,该字段在提交表单时将 CURRENT_TIMESTAMP 写入数据库。
我面临的挑战是我想从这些表单创建报告(按月、周或年排序)并按时间戳对它们进行排序,但根据我在这里看到的内容,排序是不可能的。
有没有我可以用来实现我想要的结果的替代方法?
我不知道你为什么想要
ORDER BY CURRENT_TIMESTAMP
。如果该表有一个列,您CURRENT_TIMESTAMP
在创建该行时存储了该列,您只需要说:或者,如果您想要最新的优先:
...换句话说,忘记该列是如何填充的。
现在,如果评论是准确的,并且您实际上并不太关心ordering而是关心filters,那么也许您想要的是:
这就是您不想使用 BETWEEN 的原因,以防有人以这种方式发送给您:
这就是为什么您要使用内置日期函数和本机 DATE 类型而不是转换为字符串以从 datetime 变量中修剪时间的原因:
http://www.sqlperformance.com/2012/09/t-sql-queries/what-is-the-most-efficient-way-to-trim-time-from-datetime
http://www.sqlperformance.com/2012/10/t-sql-queries/trim-time
以下是有关日期/范围查询中的不良做法的一些一般信息:
是的,您可以使用 datepart 函数来做到这一点。创建视图并将另外 3 列添加为 datepart(mm,CURRENT_TIMESTAMP) 月,datepart(wk,CURRENT_TIMESTAMP) 周 datepart(yy,CURRENT_TIMESTAMP) 年,并在视图上应用排序操作。
有关更多信息,您可以参考Datepart 函数