Je suis assez nouveau en SQL et j'espère que quelqu'un ici pourra m'aider avec ceci:
J'ai une table avec une colonne dateX
formatée comme date-heure et contenant des dates standard. Comment puis-je sélectionner tous les enregistrements de cette table où cette dateX est égale à une certaine date, par exemple. 9 mai 2014?
J'ai essayé ce qui suit mais cela ne retourne rien même si j'ai plusieurs enregistrements avec cette date.
SELECT *
FROM dbo.LogRequests
WHERE (CONVERT(VARCHAR(10), dateX, 101) = '09/05/14')
Edit: Dans la base de données, l'exemple ci-dessus se présente comme suit, à l'aide de SQL 2012: 2014-05-09 00:00:00.000
Merci beaucoup pour toute aide avec cela, Mike.
Le moyen le plus simple est de convertir en date:
SELECT *
FROM dbo.LogRequests
WHERE cast(dateX as date) = '2014-05-09';
Souvent, de telles expressions excluent l'utilisation d'un index. Cependant, selon diverses sources sur le Web, ce qui précède est sargable (ce qui signifie qu’il utilisera un index), tel que this et this .
Je serais enclin à utiliser ce qui suit, juste par habitude:
SELECT *
FROM dbo.LogRequests
WHERE dateX >= '2014-05-09' and dateX < '2014-05-10';
Pour une correspondance parfaite DateTime
dans SQL Server
SELECT ID FROM [Table Name] WHERE (DateLog between '2017-02-16 **00:00:00.000**' and '2017-12-16 **23:59:00.999**') ORDER BY DateLog DESC
SELECT * FROM LogRequests WHERE casté (dateX comme date) entre '2014-05-09' et '2014-05-10';