web-dev-qa-db-fra.com

SQL Server: comment sélectionner des enregistrements avec une date spécifique dans la colonne datetime

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.

8
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';
19
Gordon Linoff

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
1
Ravi Shrimali

SELECT * FROM LogRequests WHERE casté (dateX comme date) entre '2014-05-09' et '2014-05-10';

0
Binitta Mary