Le Temps de la Différence entre deux datetime dans une procédure stockée
Je veux obtenir une Différence de Temps entre les deux datetime dans stroed procédure. alors j'ai besoin de lancer cette réponse de type varchar. je ne sais pas comment pour obtenir cette valeur. je suis un nouveau pour stroed procédure. je suis à l'aide de sql server 2008
declare @tdate1 datetime
declare @date2 datetime
declare @finaltime varchar
set @enddate = '2004-10-18 07:53:35.000'
set @startdate = '2004-10-18 15:28:57.000'
if @startdate >= @enddate
// This is what i want to do..
else
La différence de temps dans ce que l'unité de mesure? Heures d'ouverture? Minutes? Secondes? En tout cas, regardez
datediff
.OriginalL'auteur Krishan | 2012-10-02
Vous devez vous connecter pour publier un commentaire.
essayez ceci pour vous lancer dans la bonne direction.
year
représente la période de mesure que vous voulez retournerIci est un lien vers un Article MSDN qui peut être utile
DATEDIFF
(Transact-SQL)Autres Versions
Mise À Jour: 2 Décembre 2015
CETTE RUBRIQUE S'APPLIQUE AUX:
yesSQL Serveur (à partir de 2008) yesAzure Base de données SQL yesAzure SQL Entrepôt de Données yesParallel de l'Entrepôt de Données
Retourne le nombre (entier signé) de la partie traversé les frontières entre le startdate et enddate.
Pour les plus grandes différences, voir DATEDIFF_BIG (Transact-SQL). Pour une vue d'ensemble de toutes les instructions Transact-SQL de la date et de l'heure des types de données et les fonctions, voir la Date et l'Heure de Types de Données et Fonctions (Transact-SQL).
Lien de la rubrique icône de Transact-SQL Conventions de Syntaxe
Syntaxe
-- Azure SQL Entrepôt de Données et en Parallèle de l'Entrepôt de Données
Arguments
datepart
Est la partie de startdate et enddate qui spécifie le type de frontière franchie. Le tableau suivant répertorie tous les arguments datepart valides. Variable définie par l'utilisateur équivalents ne sont pas valides.
datepart
Abréviations
Est une expression qui peut être résolu à un
time, date, smalldatetime, datetime, datetime2
, ou datetimeoffset valeur. la date peut être une expression, expression de la colonne, l'utilisateur a défini la variable ou un littéral de chaîne. startdate est soustraite de date de fin.Pour éviter toute ambiguïté, l'utilisation des années à quatre chiffres. Pour plus d'informations à propos de deux chiffres des années, voir Configurer les deux chiffres de l'année de coupure Option de Configuration de Serveur.
date de fin
Voir startdate.
Type De Retour
int
Valeur De Retour
Chaque datepart et ses abréviations renvoient la même valeur.
Si la valeur de retour est hors de portée pour int (-2 147 483 648 à +de 2 147 483 647), une erreur est retournée. Pour l'ordre de la milliseconde, la différence maximale entre startdate et enddate est de 24 jours, 20 heures, 31 minutes et 23.647 secondes. Pour la deuxième, la différence maximale est de 68 ans.
Si startdate et enddate sont tous deux attribués qu'une fois de la valeur et de la datepart n'est pas un temps datepart, 0 est renvoyé.
Un décalage de fuseau horaire composante de la date de début ou de endate n'est pas utilisé dans le calcul de la valeur de retour.
Parce que smalldatetime est que la précision de la minute, quand un smalldatetime valeur est utilisée pour la date de début ou date de fin, les secondes et les millisecondes sont toujours la valeur 0 dans la valeur de retour.
Si seulement un temps la valeur est affectée à une variable d'un type de données date, la valeur de la partie date manquante est la valeur par défaut: 1900-01-01. Si seulement une date de valeur est affectée à une variable d'une heure ou de la date type de données, la valeur de la partie heure manquante est la valeur par défaut: 00:00:00. Si la date de début ou date de fin ont seulement une partie du temps et l'autre seulement une partie de la date, de l'heure et date manquantes parties sont réglés sur les valeurs par défaut.
Si startdate et enddate de différents types de données de date et on a plus de temps à des pièces ou des fractions de secondes de précision que les autres, les parties manquantes de l'autre sont mis à 0.
datepart Limites
Les instructions suivantes ont la même date de début et la même endate. Ces dates sont adjacentes et différence horaire de .0000001 seconde. La différence entre la date de début et endate dans chaque instruction traverse un calendrier ou de l'heure limite de son datepart. Chaque instruction retourne 1. Si des années différentes sont utilisées pour cet exemple et si les deux startdate et endate sont dans la même semaine civile, la valeur de retour de la semaine de 0.
Remarques
DATEDIFF peut être utilisé dans la liste de sélection, OÙ, après AVOIR, GROUP BY et ORDER BY clauses.
DATEDIFF implicitement jette des littéraux de chaîne datetime2 type. Cela signifie que DATEDIFF ne prend pas en charge le format YDM lorsque la date est passée comme une chaîne de caractères. Vous devez explicitement convertir la chaîne en type datetime ou smalldatetime pour utiliser le format YDM.
La spécification de SET DATEFIRST n'a aucun effet sur DATEDIFF. DATEDIFF utilise toujours le dimanche comme premier jour de la semaine pour assurer la fonction est déterministe.
Exemples
Les exemples suivants utilisent différents types d'expressions comme arguments pour les paramètres startdate et enddate.
A. Spécification des colonnes pour startdate et enddate
L'exemple suivant calcule le nombre de jour de limites qui sont passées entre les dates de deux colonnes dans une table.
-- Retourne: 1
B. l'utilisateur de définir des variables pour startdate et enddate
L'exemple suivant utilise des variables définies par l'utilisateur comme arguments pour startdate et enddate.
C. la Spécification des fonctions système scalaires pour startdate et enddate
L'exemple suivant utilise scalaire système des fonctions comme arguments pour startdate et enddate.
D. la Spécification des sous-requêtes scalaires et les fonctions scalaires pour startdate et enddate
L'exemple suivant utilise des sous-requêtes scalaires et les fonctions scalaires comme arguments pour startdate et enddate.
UTILISATION AdventureWorks2012;
ALLER
E. Spécification des constantes pour startdate et enddate
L'exemple suivant utilise des constantes de caractère comme arguments pour startdate et enddate.
F. Spécification des expressions numériques et des fonctions système scalaires pour enddate
L'exemple suivant utilise une expression numérique, (GETDATE ()+ 1), et scalaire des fonctions du système, GETDATE et SYSDATETIME, comme arguments pour enddate.
H. de la Spécification d'une fonction d'agrégation pour startdate
L'exemple suivant utilise un total de fenêtre de fonction comme argument pour startdate.
Exemples: Azure SQL Entrepôt de Données Publique d'Aperçu et en Parallèle de l'Entrepôt de Données
Les exemples suivants utilisent différents types d'expressions comme arguments pour les paramètres startdate et enddate.
I. préciser les colonnes pour startdate et enddate
L'exemple suivant calcule le nombre de jour de limites qui sont passées entre les dates de deux colonnes dans une table.
-- Retourne: 1
J. Spécification des sous-requêtes scalaires et les fonctions scalaires pour startdate et enddate
L'exemple suivant utilise des sous-requêtes scalaires et les fonctions scalaires comme arguments pour startdate et enddate.
-- Utilise La Base De Données AdventureWorks
K. Précisant constantes pour startdate et enddate
L'exemple suivant utilise des constantes de caractère comme arguments pour startdate et enddate.
L. Spécification des fonctions de classement pour startdate
L'exemple suivant utilise une fonction de classement comme un argument pour startdate.
-- Utilise La Base De Données AdventureWorks
M. de la Spécification d'une fonction d'agrégation pour startdate
L'exemple suivant utilise un total de fenêtre de fonction comme argument pour startdate.
-- Utilise La Base De Données AdventureWorks
OriginalL'auteur Michael Eakins
Caisse DATEDIFF. Voici une démonstration d'utilisation de cette:
OriginalL'auteur Jason Sperske
En supposant que vous voulez calculer la différence entre deux dates en jours, voici ma suggestion:
Je suppose que vous voulez toujours une réponse positive, de sorte que l'ABS permet d'ignorer l'ordre des dates. Vous avez mentionné dans votre message que vous avez voulu la réponse finale que Varchar, je l'ai donc inclus un plâtre.
Espère que cela vous aide.
OriginalL'auteur Gidil
À l'aide de DATEDIFF (), vous pouvez obtenir les secondes de différence, à quelques minutes de différence, Heure de décalage..... etc. Mais si vous voulez pour obtenir la date/heure différence de façon claire, vous pouvez faire ce genre de chose.
.
Format de sortie [HH:MM:SS] : 05:31:07
Je Pense que c'est la meilleure façon d'obtenir la différence de temps entre deux dates reprises dans SQL
OriginalL'auteur Thilina Sandunsiri
Voici ce que j'ai utilisé avant, très court code:
Select CAST((@EndDateTime-@StartDateTime) comme time(0)) '[hh:mm:ss]'
OriginalL'auteur SQLnbe