10
votes

Date de la bande TSQL de DateTime

Quelle est la meilleure façon de supprimer la date à partir d'une date d'heure, il est donc laissé de faire une comparaison?

Je sais que je peux faire ce qui suit: xxx

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?


2 commentaires

Une valeur DateTime 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.


4 Réponses :


1
votes
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

1 commentaires

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.



11
votes

Essayez la fonction TimeOnly de Date d'Essential SQL Server, heure, et DateTime Fonctions :

declare @time as time
set @time = cast(dateTimeVal as time)


0 commentaires

13
votes

Si vous utilisez SQL 2008

SELECT CAST(GETDATE() AS TIME)


0 commentaires

0
votes

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 plancher (valeur) est le jour de 1900-01-01 et une partie fractionnée (valeur - plancher (valeur)) fait partie de vingt-quatre heures écoulées du début de la journée xxx


0 commentaires