en MySQL
select * from record where register_date like '2009-10-10%'
Quelle est la syntaxe dans SQL Server?
Je vous remercie.
en MySQL
select * from record where register_date like '2009-10-10%'
Quelle est la syntaxe dans SQL Server?
Je vous remercie.
Vous pouvez utiliser la DATEPART() la fonction
SELECT * FROM record
WHERE (DATEPART(yy, register_date) = 2009
AND DATEPART(mm, register_date) = 10
AND DATEPART(dd, register_date) = 10)
Je trouve cette façon, facile à lire, comme il ignore le temps composant, et vous n'avez pas à utiliser le jour suivant la date de restreindre votre sélection. Vous pouvez aller à plus ou moins grande granularité par l'ajout de clauses à l'aide de la Partie de code, par exemple
AND DATEPART(hh, register_date) = 12)
pour obtenir des enregistrements réalisés entre 12 et 1.
Consultez le MSDN DATEPART docs pour la liste complète des arguments valables.
Il n'y a pas de support direct pour l'opérateur LIKE par rapport aux variables DATETIME, mais vous pouvez toujours convertir le DATETIME en VARCHAR:
SELECT (list of fields) FROM YourTable
WHERE CONVERT(VARCHAR(25), register_date, 126) LIKE '2009-10-10%'
Consultez la documentation MSDN pour obtenir une liste complète des "styles" disponibles dans la fonction CONVERT.
Marc
Si vous faites cela, vous le forcez à effectuer une conversion de chaîne. Il serait préférable de créer une plage de dates de début / fin et d’utiliser:
declare @start datetime, @end datetime
select @start = '2009-10-10', @end = '2009-11-10'
select * from record where register_date >= @start
and register_date < @end
Cela lui permettra d'utiliser l'index (s'il en existe un sur register_date
), plutôt que d'un scan de table.
Vous pouvez utiliser CONVERT pour obtenir la date sous forme de texte. Si vous le convertissez en varchar (10), vous pouvez utiliser = au lieu de:
select *
from record
where CONVERT(VARCHAR(10),register_date,120) = '2009-10-10'
Ou vous pouvez utiliser une date limite supérieure et inférieure, avec l'avantage supplémentaire de pouvoir utiliser un index:
select *
from record
where '2009-10-10' <= register_date
and register_date < '2009-10-11'
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.