以文本方式查看主题
- Foxtable(狐表) (http://foxtable.com/bbs/index.asp)
-- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2)
---- 为什么sql语句 order by 日期,ID,但是结果只对日期排序,ID的排序却是出错的呢? (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=105476)
|
-- 作者:chen3728060
-- 发布时间:2017/8/20 16:06:00
-- 为什么sql语句 order by 日期,ID,但是结果只对日期排序,ID的排序却是出错的呢?
我是sql2005,
sel-ect SupplierPayTime,SupplierPayID from SupplierPayMain order by SupplierPayTime ,SupplierPayID
我的问题是出在排序上
这个代码结果是
此主题相关图片如下:2.jpg
这2个列的类型是 此主题相关图片如下:2.png
先按照时间排序,如果时间一样,就按照ID排序,但是ID并没有排序,太奇怪了
如果只 ORDER BY d.SupplierPayID
此主题相关图片如下:5.jpg
[此贴子已经被作者于2017/8/20 16:08:01编辑过]
|
-- 作者:有点甜
-- 发布时间:2017/8/20 16:18:00
--
Order by Convert(varchar, SupplierPayTime, 120) ,SupplierPayID
|
-- 作者:chen3728060
-- 发布时间:2017/8/20 16:25:00
-- 回复:(有点甜)Order by Convert(varchar, Supplier...
为啥转了时间为完整格式时间的字符串后,就可以比对成功?是不是sql的缺陷?
在狐表里,对时间排序后对ID排序,也是这样出现问题
此主题相关图片如下:6.jpg
[此贴子已经被作者于2017/8/20 16:26:33编辑过]
|
-- 作者:有点甜
-- 发布时间:2017/8/20 16:31:00
--
datetime类型,是存放毫秒等数据的, 如 2017-08-20 16:30:42 123
你肯定是毫秒数不同,导致排序出错。
|
-- 作者:chen3728060
-- 发布时间:2017/8/20 16:46:00
-- 回复:(有点甜)datetime类型,是存放毫秒等数据的,...
真的是!我找到了
此主题相关图片如下:7.jpg
为啥毫秒数会跟我新建单据的顺序不同?
是不是因为我的日期列,是客户端向服务器请求的
Dim cmd As New SQLCommand Dim dt As Date cmd.C cmd.CommandText = "Select GetDate()" dt = cmd.ExecuteScalar() e.DataRow("SupplierPayTime")= dt
服务器只返回了年月日 时分 ,没有秒和毫秒,我本地系统再转化为毫秒,导致的出错?有什么办法可以解决?我不能用本地时间,因为要防止用户的付款单据时间作弊
|
-- 作者:有点甜
-- 发布时间:2017/8/20 16:52:00
--
cmd.CommandText = "Select GetDate()"
改成
cmd.CommandText = "Select convert(varchar, GetDate(), 120)"
|
-- 作者:chen3728060
-- 发布时间:2017/8/20 16:57:00
-- 回复:(有点甜)cmd.CommandText = "Select GetDate(...
我发现
Dim cmd As New SQLCommand Dim dt As Date cmd.C cmd.CommandText = "Se lect GetDate()" ’换成Sele ct convert(varchar, GetDate(), 120) 也一样 dt = cmd.ExecuteScalar() output.show(dt)
Dim r As Row = Tables("SupplierPayMain").AddNew r("SupplierPayTime") = dt output.show(r("SupplierPayTime"))
结果:
2017-08-20 16:57:58 2017-08-20 16:57:00 列属性为 datatime的,就只剩下 2017-08-20 16:40:00,没有了秒,是不是列属性的问题?
[此贴子已经被作者于2017/8/20 17:00:17编辑过]
|
-- 作者:有点甜
-- 发布时间:2017/8/20 17:00:00
--
以下是引用chen3728060在2017/8/20 16:57:00的发言:
但是存进去列属性为 datatime的,就只剩下 2017-08-20 16:40:00,没有了秒,是不是列属性的问题?
列属性那里要设置成 dateLongTime 才能保存秒。
|