sql select où quelque chose se passe ce jour-là

J'ai des colonnes:

code unique date info name a123 adfgh 2014-07-14 14:15:00 test user1 a124 aklgp 2014-08-12 09:15:00 test user1 a175 opllp 2014-08-12 11:15:00 test user2 

Et je voudrais get tous les loggings où unique = $ variable, mais ce jour-là. Exmpl: si mon unique = 'aklgp' je voudrais voir les deux

 a124 aklgp 2014-08-12 09:15:00 test user1 a175 opllp 2014-08-12 11:15:00 test user2 

Parce que les deux loggings sont dans le même jour? Est-ce que c'est posible?

Je joue avec DATEDIFF mais ce n'est pas bon pour mon

Pas sûr que ce soit suffisant, mais l'idée pourrait être quelque chose comme ça.

 cast([date] as date) 

prendra la partie "date" de votre datetime (en espérant qu'il s'agit d'un type datetime), ce qui vous donnera … un jour.

 select * from yourTable where cast([date] as date) IN (select cast([date] as date) from yourTable where [unique] = 'aklgp') 

Bien sûr, si vous avez beaucoup d' aklgp à différents jours, vous obtiendrez plus de données. Mais unique devrait être … unique, non?

Voir SqlFiddle

MODIFIER

Comme mentionné par Bulat, vous pouvez également utiliser EXISTS

 SELECT * from yourTable t1 where exists (select null from yourTable t2 where cast(t1.date as date) = cast(t2.date as date) and t2.[unique] = 'aklgp') 

Peut être cela aussi vous aider,

 DECLARE @UNIQUE VARCHAR(20) SET @UNIQUE = 'AKLGP' SELECT * FROM [TABLE] WHERE CAST([DATE] AS DATE) = (SELECT CAST([DATE] AS DATE) FROM [TABLE] WHERE [UNIQUE] = @UNIQUE ) 

Je ne connaîtrais pas une solution en utilisant seulement SQL. Peut-être qu'une solution en PHP pourrait offrir de l'aide:

 $query = "SELECT * FROM yourTable WHERE unique = 'aklgp'"; $result = mysql_query($sql) or die(mysql_error()); $row = mysql_fetch_row($result); $year = date_format($row['date'], 'Y'); $month = date_format($row['date'], 'm'); $day = date_format($row['date'], 'd'); $query = "SELECT * FROM yourTable WHERE (DATEPART(yy, date) = $year AND DATEPART(mm, date) = $month AND DATEPART(dd, date) = $day)";