Si un utilisateur sélectionne une plage telle que:Vérifiez si la date tombe dans la plage Mois et Année
- Début: Novembre 2016
- Fin: Septembre 2017,
Je veux inclure tous résultats compris entre 2016-11-01 et 2017-09-30.
J'ai essayé de concaténer ensemble l'année, le mois et le jour, mais le problème vient du fait que tous les mois n'ont pas le même jour. Bien que je sache que tous les mois commencent le jour 01, le jour d'un mois peut être 28, 29, 30 ou 31.
Y a-t-il un moyen de le faire sans construire la date? SqlServer 2008 n'a pas la fonction EOMONTH, et je me sens comme quelque chose de plus complexe que ce n'est pas la bonne solution. Je voudrais éviter cela:
WHERE
DateCol >= '2016' + '-' + '11' + '-01' AND
DateCol <= '2017' + '-' + '09' + '-30'
'où DATE_1> = '20161101' et DATE_1 <= « 20170930'' - Les seuls formats vraiment sûrs pour littéraux date/heure dans SQL Server, au moins pour 'datetime' et' smalldatetime', sont: 'YYYYMMDD' et' YYYY-MM-DDThh: mm: ss [.nnn] '- [Mauvaises habitudes de coup de pied: mauvaise manipulation des requêtes de date/distance - Aaron Bertrand] (http : //sqlblog.com/blogs/aaron_bertrand/archive/2009/10/16/bad-habits-to-kick-mishandling-date-range-queries.aspx) – SqlZim
https://blogs.msdn.microsoft.com/ samlester/2013/09/23/eomonth-equivalent-en-sql-server-2008-r2-et-dessous/ – ttugates
@SqlZim, je ne parle pas vraiment de format. L'année et le mois sont sélectionnés par l'utilisateur. Donc, s'ils ont choisi septembre 2017, comment avez-vous su ajouter l'appendice 30 à la date «20170930»? – user7733611