当我得到这个时,我遇到了问题" 16Nov010001"以前的记录" 16Oct310001"。
我试图订购date和serialno但没有工作。我怎么解决这个问题?
我的疑问是:
SELECT TOP (1) serialno
FROM dbo.Table
WHERE (serialno < '16Nov010001')
ORDER BY tranferdate, serialno DESC
和
SELECT TOP (1) serialno
FROM dbo.Table
WHERE serialno < '16Nov010001'
ORDER BY serialno DESC
表记录:
serialno | date
------------------------------------------
16Nov010001 | 2016-11-01 11:28:40.640
16Nov010002 | 2016-11-01 11:32:38.530
16Nov010003 | 2016-11-01 11:35:08.437
16Nov010004 | 2016-11-01 11:36:30.117
16Nov010005 | 2016-11-01 11:37:01.760
16Nov010006 | 2016-11-01 11:39:45.393
16Oct300001 | 2016-10-30 19:40:29.963
16Oct310001 | 2016-10-31 18:42:45.833
答案 0 :(得分:0)
你正试图使用一个字符串小于另一个字符串的地方,但是如果你想命令这样做,那么日期与你可以使用日期的顺序相同相反,据我所见,您的数据将有效。
您拥有2016-11-01 11:28:40.640创建的16Nov010001 而你是在2016-11-01 11:32:38.530 4分钟后创建的16Nov010002。
答案 1 :(得分:0)
您发布的所需输出将由此查询返回
SELECT serialno, date
FROM dbo.Table
WHERE serialno <= '16Nov010001'
ORDER BY serialno DESC
我删除了TOP 1,因此会返回尽可能多的记录&lt; =&#39; 16Nov010001&#39;
PS:请记住,日期字符串的顺序与其日期值不同。例如&#39; 16Dic010001&#39; &LT; &#39; 16Nov010001&#39 ;.因此,您可能希望按照&#34; date&#34;进行比较和排序。而不是&#34; serialno&#34;。
SELECT serialno, date
FROM dbo.Table
WHERE date <= '2016-11-01'
ORDER BY serialno DESC