J'ai un start_date
et end_date
. Je veux obtenir la liste des dates entre ces deux dates. Quelqu'un peut-il m'aider à signaler l'erreur dans ma requête?
select Date,TotalAllowance
from Calculation
where EmployeeId=1
and Date between 2011/02/25 and 2011/02/27
Voici Date
une datetime
variable.
between
devrait fonctionner comme prévu.Étant donné qu'un datetime sans segment de temps spécifié aura une valeur de
date 00:00:00.000
, si vous voulez être sûr d'obtenir toutes les dates de votre plage, vous devez soit fournir l'heure de votre date de fin, soit augmenter votre date de fin et l'utiliser<
.OU
OU
N'UTILISEZ PAS les éléments suivants, car cela pourrait renvoyer certains enregistrements du 28/02/2011 si leur heure est 00: 00: 00.000.
la source
'2011/02/28 00:00:00.000'
?convert(date, Date) between '2011/02/25' and '2011/02/27'
(au moins avec un MS SQL Server récent). Laconvert()
partie se chargera de supprimer la partie temps et la comparaison entre fonctionnera alors comme prévu.Essaye ça:
Les valeurs de date doivent être saisies sous forme de chaînes.
Pour garantir la pérennité de votre requête pour SQL Server 2008 et versions ultérieures,
Date
versions il convient de l'échapper car il s'agit d'un mot réservé dans les versions ultérieures.Gardez à l'esprit que les dates sans heures prennent minuit comme valeurs par défaut, il se peut donc que vous n'ayez pas la bonne valeur.
la source
Ici, ajoutez d'abord un jour à la date de fin actuelle, ce sera
2011-02-28 00:00:00
, puis vous soustrayez une seconde pour faire la date de fin2011-02-27 23:59:59
. En faisant cela, vous pouvez obtenir toutes les dates entre les intervalles donnés.la source
- si le type de données est différent
la source
Cette requête est idéale pour récupérer les valeurs entre la date actuelle et ses 3 prochaines dates
Cela ajoutera éventuellement 3 jours supplémentaires de tampon à la date actuelle.
la source
C'est très ancien, mais étant donné les nombreuses expériences que j'ai eues avec les dates, vous voudrez peut-être considérer ceci: les gens utilisent des paramètres régionaux différents, en tant que tels, certaines personnes (et certaines bases de données / ordinateurs, selon les paramètres régionaux) peuvent lire ceci le 11/12/2016 comme le 11 décembre 2016 ou le 12 novembre 2016. Encore plus, le 16/11/12 fourni à la base de données MySQL sera converti en interne au 12 novembre 2016, tandis que la base de données Access fonctionnant sur un ordinateur de configuration régionale britannique interprétera et stockez-le le 16 novembre 2012.
Par conséquent, je me suis fixé comme politique d'être explicite chaque fois que je vais interagir avec des dates et des bases de données. Je fournis donc toujours mes requêtes et codes de programmation comme suit:
Notez également qu'Access acceptera le #, donc:
mais le serveur MS SQL ne le fera pas, donc j'utilise toujours "'" comme ci-dessus, ce que les deux bases de données acceptent.
Et lorsque j'obtiens cette date à partir d'une variable dans le code, je convertis toujours le résultat en chaîne comme suit:
J'écris ceci parce que je sais que parfois certains programmeurs peuvent ne pas être assez désireux de détecter la conversion inhérente. Il n'y aura pas d'erreur pour les dates <13, juste des résultats différents!
Quant à la question posée, ajoutez un jour à la dernière date et faites la comparaison comme suit:
la source
la source
Essayez de mettre les dates entre # # par exemple:
Ça a marché pour moi.
la source
si sa date dans 24 heures et commence le matin et se termine la nuit devrait ajouter quelque chose comme:
la source
meilleure requête pour la date sélectionnée entre la date actuelle et les trois derniers jours :
meilleure requête pour la date sélectionnée entre la date actuelle et les trois prochains jours :
la source
Consultez les exemples ci-dessous: à la fois fonctionnels et non fonctionnels.
OU
OU
ET ci-dessous ne fonctionne pas:
la source
nous pouvons utiliser entre pour afficher deux données de dates, mais cela cherchera toutes les données et les comparera, ce qui ralentira notre processus pour les données énormes, donc je suggère à tout le monde d'utiliser
datediff
:ici le calendrier est le tableau, dt comme variable de date de début et dt2 est la variable de date de fin.
la source
J'aime utiliser la syntaxe '1 MonthName 2015' pour les dates ex:
pour les dates
la source
J'irais pour
La logique étant d'
>=
inclure la date de début entière et d'<
exclure la date de fin, nous ajoutons donc une unité à la date de fin. Cela peut s'adapter pendant des mois, par exemple:la source
la source
Vous pouvez essayer ce SQL
la source
Vraiment, toutes les dates sql doivent être au format aaaa-MM-jj pour des résultats plus précis.
la source
la source
il vaut mieux écrire de cette façon:
la source
la source