Un moyen d'extraire à partir d'une valeur DateTime données sans secondes
J'ai un sql DateTime
(ms sql server) et que vous souhaitez extraire de la même date, sans les secondes:
par exemple, 2011-11-22 12:14:58.000
pour devenir: 2011-11-22 12:14:00.000
Comment puis-je faire cela? Je pensais l'utiliser DATEADD
en combinaison avec DATEPART
mais semble très enclins à faire des erreurs (en plus des problèmes de performances)
- En quoi cela vous semble enclin à l'erreur?
- long et assez difficile d'écrire correctement ? 🙂
- est-ce que vous souhaitez masquer secondes?? pourquoi sont vous fournir quelques secondes, comme 000 TOUJOURS??
- Je veux avoir 0 secondes parce que je veux regrouper des enregistrements à partir de la même date/heure/minute
Vous devez vous connecter pour publier un commentaire.
essayez ceci:
CHAR(17)
doit être utilisé à la place, ou le procès-verbal sera mauvais. Deuxièmement, cette méthode produit une conversion de type avertissement.Ce sera efficace, si vous ne voulez pas d'une lente conversion entre les types de données.
DECLARE @myDate DATETIME = '2007-05-08 12:35:32' SELECT CAST(@myDate AS smalldatetime)
Date et l'heure besoins attentivement et de ne pas être converties en TEXTE.
Mon personal solution:
Édité:
Concernant http://blog.waynesheffield.com/wayne/archive/2012/03/truncate-a-date-time-to-different-part/, DateAdd a une meilleure performance.
Grâce à t-clausen.dk
Avec un peu de bidouiller, ce qui semble bien fonctionner:
La manière exacte que j'utilise dans ma requête dans le cadre de la liste de sélection :
,CAST(CONVERT(CHAR(17), bl.[time],113) AS varchar(17))
est la solution à ce résultat (15 Dec 2017 06:43
) je cherchais.Dans les requêtes
Si il n'y a pas de millisecondes, que
Pour supprimer un millisecondes partie, ajouter
Pour arrondir c':
Juste Truncate: