sql order by 日期 排序问题

select * from 表 order by 日期 desc

如果日期 完全相同 按什么排序?
一般 在毫秒上 会有区别 但如果我用datediff取与当前时间的毫秒间隔,之后再as一个字段,进行排序的话,会出现字段溢出。因为如果间隔1年的话用毫秒计算是个很大的数字。
我现在想用户批量更新之后,按更新后的日期,进行排序,但直接order by 更新日期 不行 很多信息都不显示,我估计是因为日期相同的原因。 如果这样该怎么办?
是datetime型也精确到秒,问题是我做分页的时候,如果order by 编号 得出的搜素结果和 order by 日期 得到的结果不一样,前者多后者少,而且还少很多数据。
select top "&每页显示条数&" 字段1,字段2,日期 from 表 where 编号<"+截止编号变量+" and 字段1 like '"+变量1+"' 字段2 like '"+变量2+"' order by 审核 desc,编号 desc
select top "&每页显示条数&" 字段1,字段2,日期 from 表 where 编号<"+截止编号变量+" and 字段1 like '"+变量1+"' 字段2 like '"+变量2+"' order by 审核 desc,日期 desc
我觉得也许问题和编号有关?编号是主键。分页是用的无限流分页。即每翻一页只读取一段编号内的数据,而不是读整个表。这样在大数据量的情况下,可以提高效率。
或者听说存储过程,也可以实现大数据量的分页,如果能提供个代码页不胜感激。

首先我不知道你的日期字段到底是什么,这一点我想要先确定,如果是datetime型的话,那么你按照这个排序照理来说本来就是精确到秒的,你最好拿出一个日期的实际值给我们
如果你的日期字段其实是文本型,存储的诸如:'20090101’,那么根本就不可能考虑什么秒或者毫秒,因为你根本就没有存储这些信息
至于SqlServer的时间排序法,datetime型因为本身就是诸如
'20091001 11:23'这样的格式,所以排序根本不需要考虑什么日期相同怎么办,如果有些奇怪的人喜欢用月、年、日期排序,也不是不可以
比如说
order by month(gatedate()),year(gatedate()),day(gatedate())
秒和分钟的函数我急不起来了,你可以查一下帮助,无论你想要怎么排序都是非常容易的
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2018-05-14
个人思路:可以选择主键ID作为第二排序字段。
分析:
数据被批量更新时,更新顺序一般按照默认主索引排序进行依次更新。因此,个人认为也可以采取主键ID作为第二排序字段。本回答被提问者和网友采纳
第2个回答  2010-01-30
1、若日期相同、且无其它排序条件,一般就是按记录顺序列出;
2、如果你是想要同一天的无论具体时间是几点几分,试试用 trunc(日期)看,这个函数把同一天的时间都截断到当天的0:00:00.0来处理
---
trunc是Oracle数据库提供的函数,这里的方法只是提供一个思路。
不知你用的是哪种数据库,不妨自己找找效果类似的函数。
第3个回答  2010-01-31
好,3Q
第4个回答  2010-01-30
我觉得是不是可以这样
更新时,将年月日时分秒毫秒都乘上一个由大至小的数再求和 之后就可依此来排序
相似回答