DateTime requête sur la seule année dans SQL Server
Je veux sélectionner plusieurs enregistrements sur la base d'une correspondance de l'année, par exemple dans le tableau de l'onglet
où les colonnes sont [id] int
, [name] varchar
, [bookyear] datetime
Je veux sélectionner tous les enregistrements où l'année 2009.
La requête suivante donne 0 résultats:
SELECT [ACCNO]
,[Roll No]
,[IssueDate]
,[DueDate]
FROM [test1].[dbo].[IssueHis$]
where [IssueDate] between 12-12-2004 and 1-01-2010
- Comment peut-il être marqués à la fois mysql et sql-server?
- Jetez un oeil à la fonction DATEPART - msdn.microsoft.com/en-us/library/ms174420.aspx - vous pourrez ensuite SÉLECTIONNEZ * à PARTIR de l'onglet OÙ DATEPART(année, IssueDate) ENTRE 2005 ET 2010 par exemple. Beaucoup d'exemples sur aussi, voir stackoverflow.com/questions/5043920/...
- J'ai rangé les balises @rene comme il est clair que la question est à propos de SQL Server.
- vous ne mettez pas de fucntions sur les colonnes dans SQL Server. Il invalide l'utilisation des index
- Pourquoi dire "année 2009", et puis "12-12-2004"?
Vous devez vous connecter pour publier un commentaire.
yyyymmdd
modèle pour SQL Server (pasyyyy-mm-dd
, il est dangereux en général)Donc, pour trouver les valeurs entre "12 Déc 2004" et "31 Décembre 2009" inclusive, ce qui permet pour l'heure:
De modifier ou de cela, en raison de l'ambiguïté de la question de "l'année = 2009"
L'une des choses les plus importantes à retenir en ce qui concerne SQL Server et les dates, c'est que le meilleur format à utiliser est: est-ce
'YYYYMMDD'
(ou'YYYYMMDD HH:MI:SS'
). Ce format sera toujours interprété correctement par SQL Server, indépendamment de la régionale les paramètres de date.Vous pouvez créer une vue qui a le IssueYear dans une colonne distincte
Ensuite, vous pouvez lancer une requête sur la vue comme
Vous pouvez faire
Référence