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)";