Quelle est la meilleure façon de supprimer la date em> à partir d'une date d'heure, il est donc laissé de faire une comparaison?
Je sais que je peux faire ce qui suit: p> mais cela implique de convertir et des caractères. Si je voulais vérifier si une heure (y compris les minutes) était entre deux autres fois stockées dans des colonnes DateTime, existe-t-il un moyen élégant de le faire sans avoir à compter sur la conversion des chaînes de caractère? P> P>
4 Réponses :
DECLARE @Now DateTime, @Today DateTime, @Time DateTime SET @Now = GetDate() SET @Today = DateAdd(dd, DateDiff(dd, 0, @Now), 0) SET @Time = DateAdd(ss, DateDiff(ss, @Today, @Now), 0) SELECT @Time
Beau. Absolument magnifique. Dans une DB MSDE, j'ai utilisé le calcul @Today pour dépouiller le temps passé d'une date passée, fonctionne splendidement.
Essayez la fonction TimeOnly de Date d'Essential SQL Server, heure, et DateTime Fonctions :
declare @time as time set @time = cast(dateTimeVal as time)
Si vous utilisez SQL 2008
SELECT CAST(GETDATE() AS TIME)
Une autre façon d'obtenir la date et l'heure de DateTime.
DateTime dans SQL Server implémenté comme valeur de flotteur où une partie entière
Une valeur code> DateTime (code> aura toujours un élément de date (indice d'indice dans le nom :) Donc, le seul moyen de supprimer littéralement la date "alors que le temps est laissé" est de le jeter comme un type qui n'a pas de date L'élément, c'est-à-dire la réponse de @Mike M..
J'aurais spécifié de préciser que notre logiciel utilise SQL2005 (et a été conçu à l'ère de SQL2000 de sorte que le type de données temporelle, qui est une nouvelle fonctionnalité de SQL2008 n'est pas une solution réalisable. Si vous regardez la réponse qui a été marquée correcte, vous allez voir une solution élégante.