如何访问sql server的最后两个日期

时间:2015-06-11 17:31:52

标签: sql sql-server sql-server-2008 tsql datetime

我在表格中有日期栏

ColumnName: event_timestamp
2015-06-01 15:23:31.000
2015-06-01 15:25:21.000
2015-06-03 09:00:41.000
2015-06-03 09:14:49.000
2015-06-03 09:15:03.000
2015-06-03 09:15:23.000
2015-06-06 08:40:06.000
2015-06-06 08:40:19.000
2015-06-06 11:13:35.000
2015-06-06 11:13:53.000
2015-06-06 11:15:04.000
2015-06-06 11:15:30.000
2015-06-09 15:08:13.000
2015-06-09 15:08:33.000
2015-06-09 15:08:45.000
2015-06-09 15:09:05.000

预期产出

2015-06-06
2015-06-09

我试过但失败了

SELECT CONVERT(datetime,MAX(myDate),103),      
               (MAX(CONVERT(datetime,mydate,103)))-1 as DT 
FROM (
       SELECT DISTINCT (CONVERT(VARCHAR,events.event_timestamp, 103)) myDate
       FROM events 
       Where event_timestamp Between '01-Jun-15 11:14:40 AM' 
                     AND '11-Jun-15 11:14:40 AM'
     ) tbl

3 个答案:

答案 0 :(得分:3)

使用Group By和Order By Clause with Desc然后获取前2条记录

Select TOP 2 CONVERT(date, datecol) 
From #t
Group By CONVERT(date, datecol)
Order By CONVERT(date, datecol) Desc

See Working Example

答案 1 :(得分:2)

你可以这样做:

FIRST

答案 2 :(得分:0)

执行此操作的简单方法是执行“GROUP BY”和“LIMIT 2”。您将希望按日期分组(记住忽略时间),然后将结果限制为2.以下是两者的链接。

极限:http://www.w3schools.com/sql/sql_top.asp GROUP BY:https://dev.mysql.com/doc/refman/5.5/en/group-by-handling.html