comment accéder aux deux dernières dates SQL Server

J'ai une colonne de date dans le tableau

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 

Production attendue

 2015-06-06 2015-06-09 

J'ai essayé mais échoué

 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 

Utilisez Grouper par et Clause de command avec Desc puis prenez les 2 meilleurs loggings

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

Voir l'exemple de travail

Vous pourriez faire ceci:

 -- grabs top 2 descending by date select top 2 distinctDates from ( -- gets the distinct dates between your date range select distinct convert(date, mydate) as distinctDates FROM events e where e.timestamp Between '01-Jun-15 11:14:40 AM' AND '11-Jun-15 11:14:40 AM' ) dt order by distinctDates desc 

Un moyen facile de le faire est de faire un "GROUP BY" et un "LIMIT 2". Vous voudrez vous regrouper par date (n'oubliez pas de ne pas tenir count du time), puis limitez vos résultats à 2. Voici un lien vers ces deux éléments.

LIMIT: http://www.w3schools.com/sql/sql_top.asp GROUPE PAR: https://dev.mysql.com/doc/refman/5.5/fr/group-by-handling.html