TSQl: Sélectionner la Date du jour - 6 Jours et l'heure à 12:01 AM
Je suis en train d'obtenir la date du jour - 6 jours. C'est facile.
Maintenant, je suis en train d'essayer d'obtenir la date du jour - 6 jours + 12:01 AM.
Donc, si aujourd'hui est 3-2-2012 11:14 AM.
Je veux obtenir 2-25-2012 12:01 AM
Ces 2 sélectionne va me donner la date du jour - 6, mais ne se réinitialise pas le temps à 12:01 AM
- sélectionnez getdate()-6
- SÉLECTIONNEZ DATEADD(jour, -6, CURRENT_TIMESTAMP);
- La solution que vous avez choisi est le pire de la surgestions
Vous devez vous connecter pour publier un commentaire.
À l'aide de la commande suivante va vous donner le résultat dans un
datetime
format:Résultat:
2012-02-25 00:01:00.000
Une fois que vous avez la date que vous souhaitez, vous pouvez convertir de nombreux formats différents.
Ou vous pouvez faire ce qui suit, dans un
varchar
format:qui résultats dans
02-25-2012 12:01 AM
est équivalent à
Je pense que vous trouverez cette option plus rapide et plus flexible que les implémentations de type varchar. en gardant les types de données comme elles sont, vous n'avez pas à vous soucier des aléas de la distribution/convertir les résultats.
Voir Louis Davidson pour un de la pleine explications:
http://sqlblog.com/blogs/louis_davidson/archive/2011/02/09/some-date-math-fun.aspx
GETDATE() - 6
mais juste pour éviter de perpétuer cette date, la sténographie, puisque cette méthode ne fonctionne pas avec les nouveaux types date/heure introduits dans SQL Server 2008.DATEADD
/DATEDIFF
paire.Un de moins de conversion que @Phil Helmer solution:
Puisque certaines personnes sont apparemment pas au courant que tout ce qui est "à droite" de l'élément spécifié dans ce
DATEADD
/DATEDIFF
paire est effectivement prise à partir de la droite constante. Tout ce qui est "à gauche" (et y compris les éléments réels) peut être utilisé pour obtenir des effets compensatoires.(Ci-dessus à gauche/droite sont en supposant que la totalité de la valeur de type datetime est interprété avec l'exercice de la gauche et de millisecondes à droite, avec toutes les valeurs intermédiaires dans la "taille" de commande)
Édité - j'ai également mis à jour ma réponse à subsumer le
-6
dans la partie droite de la valeur. Il est possible de créer toutes sortes de compensation par la cueillette des valeurs appropriées pour les deux constantes.La relation entre les deux datetime constantes spécifiés dans l'expression doit être exprimé, au moins dans un commentaire à côté de l'utilisation. Ci-dessus, je suis en utilisant le 1/1/1900 comme un point de base, et le calcul du nombre de minuit, les transitions entre hier et aujourd'hui (comme
DATEDIFF
fonctionne toujours). Je suis alors en ajoutant à ce nombre de jours sur le point dans le temps 6 jours plus tôt (par exemple, 26/12/1899) exactement à 00:01 dans la matinée...