Je pense avoir bien compris que SQL server stockent les dates et les heures
séparément d'un coté les jours écoulés depuis une date (1/1/1753 : datetime
ou 1/1/1900 smalldatetime) et d'un autre les millisecondes écoulées depuis
minuit pour le jour indiqué dans la date
Comment obtenir cette durées en secondes et/ou millisecondes , à part
utiliser une fonction scalaire qui utilisera datepart (hour, minute ...)
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
GLB
Salut Philippe,
Ceci est tiré de l'aide
Microsoft SQL Server stocke de manière interne les valeurs de type datetime sous la forme de deux entiers de 4 octets. Les 4 premiers octets contiennent le nombre de jours écoulés avant ou après la date de base (base date) du 1er janvier 1900, qui sert de référence au système. Les valeurs datetime représentant des dates antérieures au 1er janvier 1753 ne sont pas autorisées. Les 4 autres octets stockent l'heure du jour représentée par le nombre de millièmes de seconde après minuit.
Le type de donnée smalldatetime stocke les dates et les heures du jour avec une précision inférieure à celle du type datetime. SQL Server stocke les valeurs smalldatetime sous la forme de deux entiers de 2 octets. Les deux premiers octets contiennent le nombre de jours après le premier janvier 1900. Les deux autres octets stockent le nombre de minutes écoulées après minuit. Ce type de données permet de stocker les dates comprises entre le 1er janvier 1900 et le 6 juin 2079, avec une précision d'une minute.
Dans le cas d'un datetime si tu cast avec un INT tu doit rcupérer les milisecondes et pour un smalldatetime tu cast avec un SmallINT !
ce ne sont que des suppositions :-)
Non testé
Gilles
Philippe a écrit :
Bonjour à tous,
Je pense avoir bien compris que SQL server stockent les dates et les heures séparément d'un coté les jours écoulés depuis une date (1/1/1753 : datetime ou 1/1/1900 smalldatetime) et d'un autre les millisecondes écoulées depuis minuit pour le jour indiqué dans la date
Comment obtenir cette durées en secondes et/ou millisecondes , à part utiliser une fonction scalaire qui utilisera datepart (hour, minute ...)
Que renvoie cast(myDate as bigint)
Merci pour votre aide
Philippe CIA IT
Salut Philippe,
Ceci est tiré de l'aide
Microsoft SQL Server stocke de manière interne les valeurs de type
datetime sous la forme de deux entiers de 4 octets. Les 4 premiers
octets contiennent le nombre de jours écoulés avant ou après la date de
base (base date) du 1er janvier 1900, qui sert de référence au système.
Les valeurs datetime représentant des dates antérieures au 1er janvier
1753 ne sont pas autorisées. Les 4 autres octets stockent l'heure du
jour représentée par le nombre de millièmes de seconde après minuit.
Le type de donnée smalldatetime stocke les dates et les heures du jour
avec une précision inférieure à celle du type datetime. SQL Server
stocke les valeurs smalldatetime sous la forme de deux entiers de 2
octets. Les deux premiers octets contiennent le nombre de jours après le
premier janvier 1900. Les deux autres octets stockent le nombre de
minutes écoulées après minuit. Ce type de données permet de stocker les
dates comprises entre le 1er janvier 1900 et le 6 juin 2079, avec une
précision d'une minute.
Dans le cas d'un datetime si tu cast avec un INT tu doit rcupérer les
milisecondes et pour un smalldatetime tu cast avec un SmallINT !
ce ne sont que des suppositions :-)
Non testé
Gilles
Philippe a écrit :
Bonjour à tous,
Je pense avoir bien compris que SQL server stockent les dates et les heures
séparément d'un coté les jours écoulés depuis une date (1/1/1753 : datetime
ou 1/1/1900 smalldatetime) et d'un autre les millisecondes écoulées depuis
minuit pour le jour indiqué dans la date
Comment obtenir cette durées en secondes et/ou millisecondes , à part
utiliser une fonction scalaire qui utilisera datepart (hour, minute ...)
Microsoft SQL Server stocke de manière interne les valeurs de type datetime sous la forme de deux entiers de 4 octets. Les 4 premiers octets contiennent le nombre de jours écoulés avant ou après la date de base (base date) du 1er janvier 1900, qui sert de référence au système. Les valeurs datetime représentant des dates antérieures au 1er janvier 1753 ne sont pas autorisées. Les 4 autres octets stockent l'heure du jour représentée par le nombre de millièmes de seconde après minuit.
Le type de donnée smalldatetime stocke les dates et les heures du jour avec une précision inférieure à celle du type datetime. SQL Server stocke les valeurs smalldatetime sous la forme de deux entiers de 2 octets. Les deux premiers octets contiennent le nombre de jours après le premier janvier 1900. Les deux autres octets stockent le nombre de minutes écoulées après minuit. Ce type de données permet de stocker les dates comprises entre le 1er janvier 1900 et le 6 juin 2079, avec une précision d'une minute.
Dans le cas d'un datetime si tu cast avec un INT tu doit rcupérer les milisecondes et pour un smalldatetime tu cast avec un SmallINT !
ce ne sont que des suppositions :-)
Non testé
Gilles
Philippe a écrit :
Bonjour à tous,
Je pense avoir bien compris que SQL server stockent les dates et les heures séparément d'un coté les jours écoulés depuis une date (1/1/1753 : datetime ou 1/1/1900 smalldatetime) et d'un autre les millisecondes écoulées depuis minuit pour le jour indiqué dans la date
Comment obtenir cette durées en secondes et/ou millisecondes , à part utiliser une fonction scalaire qui utilisera datepart (hour, minute ...)
Que renvoie cast(myDate as bigint)
Merci pour votre aide
Philippe CIA IT
Fred BROUARD
Philippe a écrit :
Bonjour à tous,
Je pense avoir bien compris que SQL server stockent les dates et les heures séparément d'un coté les jours écoulés depuis une date (1/1/1753 : datetime ou 1/1/1900 smalldatetime) et d'un autre les millisecondes écoulées depuis minuit pour le jour indiqué dans la date
Comment obtenir cette durées en secondes et/ou millisecondes , à part utiliser une fonction scalaire qui utilisera datepart (hour, minute ...)
Que renvoie cast(myDate as bigint)
CAST (myDate AS FLOAT) vous renverra : partie entière => nombre de jour depuis 1/1/1900 partie fractionnaire => nombre de fraction de jour.
Ainsi, si CAST(myDate AS FLOAT) donne 37000.5 nous sommes le 21/4/2001 à midi. Pour le temps en minute : .5 * 24 * 60 = 720 minutes. etc
A +
Merci pour votre aide
Philippe CIA IT
-- Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com Audit, conseil, expertise, formation, modélisation, tuning, optimisation ********************* http://www.datasapiens.com ***********************
Philippe a écrit :
Bonjour à tous,
Je pense avoir bien compris que SQL server stockent les dates et les heures
séparément d'un coté les jours écoulés depuis une date (1/1/1753 : datetime
ou 1/1/1900 smalldatetime) et d'un autre les millisecondes écoulées depuis
minuit pour le jour indiqué dans la date
Comment obtenir cette durées en secondes et/ou millisecondes , à part
utiliser une fonction scalaire qui utilisera datepart (hour, minute ...)
Que renvoie cast(myDate as bigint)
CAST (myDate AS FLOAT) vous renverra :
partie entière => nombre de jour depuis 1/1/1900
partie fractionnaire => nombre de fraction de jour.
Ainsi, si
CAST(myDate AS FLOAT) donne 37000.5 nous sommes le 21/4/2001 à midi.
Pour le temps en minute :
.5 * 24 * 60 = 720 minutes.
etc
A +
Merci pour votre aide
Philippe
CIA IT
--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning, optimisation
********************* http://www.datasapiens.com ***********************
Je pense avoir bien compris que SQL server stockent les dates et les heures séparément d'un coté les jours écoulés depuis une date (1/1/1753 : datetime ou 1/1/1900 smalldatetime) et d'un autre les millisecondes écoulées depuis minuit pour le jour indiqué dans la date
Comment obtenir cette durées en secondes et/ou millisecondes , à part utiliser une fonction scalaire qui utilisera datepart (hour, minute ...)
Que renvoie cast(myDate as bigint)
CAST (myDate AS FLOAT) vous renverra : partie entière => nombre de jour depuis 1/1/1900 partie fractionnaire => nombre de fraction de jour.
Ainsi, si CAST(myDate AS FLOAT) donne 37000.5 nous sommes le 21/4/2001 à midi. Pour le temps en minute : .5 * 24 * 60 = 720 minutes. etc
A +
Merci pour votre aide
Philippe CIA IT
-- Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com Audit, conseil, expertise, formation, modélisation, tuning, optimisation ********************* http://www.datasapiens.com ***********************
Philippe
Gilles, Merci pour cette réponse,
pour être plus précis comment recupérer ou "mapper" .en integer la valeur des deux (4)octects partie date et la valeur des deux (4) octets partie time.
Le cast de la date ne retourne pas la durée , mais après test , retourne le nombre de jours écoulés depuis 1/1/1900 , que la date soit déclarée en datetime ou smalldatetime
Philippe
"GLB" a écrit dans le message de news: eh%
Salut Philippe,
Ceci est tiré de l'aide
Microsoft SQL Server stocke de manière interne les valeurs de type datetime sous la forme de deux entiers de 4 octets. Les 4 premiers octets contiennent le nombre de jours écoulés avant ou après la date de base (base date) du 1er janvier 1900, qui sert de référence au système. Les valeurs datetime représentant des dates antérieures au 1er janvier 1753 ne sont pas autorisées. Les 4 autres octets stockent l'heure du jour représentée par le nombre de millièmes de seconde après minuit.
Le type de donnée smalldatetime stocke les dates et les heures du jour avec une précision inférieure à celle du type datetime. SQL Server stocke les valeurs smalldatetime sous la forme de deux entiers de 2 octets. Les deux premiers octets contiennent le nombre de jours après le premier janvier 1900. Les deux autres octets stockent le nombre de minutes écoulées après minuit. Ce type de données permet de stocker les dates comprises entre le 1er janvier 1900 et le 6 juin 2079, avec une précision d'une minute.
Dans le cas d'un datetime si tu cast avec un INT tu doit rcupérer les milisecondes et pour un smalldatetime tu cast avec un SmallINT !
ce ne sont que des suppositions :-)
Non testé
Gilles
Philippe a écrit :
Bonjour à tous,
Je pense avoir bien compris que SQL server stockent les dates et les heures séparément d'un coté les jours écoulés depuis une date (1/1/1753 : datetime ou 1/1/1900 smalldatetime) et d'un autre les millisecondes écoulées depuis minuit pour le jour indiqué dans la date
Comment obtenir cette durées en secondes et/ou millisecondes , à part utiliser une fonction scalaire qui utilisera datepart (hour, minute ...)
Que renvoie cast(myDate as bigint)
Merci pour votre aide
Philippe CIA IT
Gilles, Merci pour cette réponse,
pour être plus précis comment recupérer ou "mapper" .en integer la valeur
des deux (4)octects partie date et la valeur des deux (4) octets partie
time.
Le cast de la date ne retourne pas la durée , mais après test , retourne le
nombre de jours écoulés depuis 1/1/1900 , que la date soit déclarée en
datetime ou smalldatetime
Philippe
"GLB" <glebarbier_supprimececi@segilog.com> a écrit dans le message de news:
eh%23rUjDUHHA.3980@TK2MSFTNGP02.phx.gbl...
Salut Philippe,
Ceci est tiré de l'aide
Microsoft SQL Server stocke de manière interne les valeurs de type
datetime sous la forme de deux entiers de 4 octets. Les 4 premiers octets
contiennent le nombre de jours écoulés avant ou après la date de base
(base date) du 1er janvier 1900, qui sert de référence au système. Les
valeurs datetime représentant des dates antérieures au 1er janvier 1753 ne
sont pas autorisées. Les 4 autres octets stockent l'heure du jour
représentée par le nombre de millièmes de seconde après minuit.
Le type de donnée smalldatetime stocke les dates et les heures du jour
avec une précision inférieure à celle du type datetime. SQL Server stocke
les valeurs smalldatetime sous la forme de deux entiers de 2 octets. Les
deux premiers octets contiennent le nombre de jours après le premier
janvier 1900. Les deux autres octets stockent le nombre de minutes
écoulées après minuit. Ce type de données permet de stocker les dates
comprises entre le 1er janvier 1900 et le 6 juin 2079, avec une précision
d'une minute.
Dans le cas d'un datetime si tu cast avec un INT tu doit rcupérer les
milisecondes et pour un smalldatetime tu cast avec un SmallINT !
ce ne sont que des suppositions :-)
Non testé
Gilles
Philippe a écrit :
Bonjour à tous,
Je pense avoir bien compris que SQL server stockent les dates et les
heures séparément d'un coté les jours écoulés depuis une date (1/1/1753
: datetime ou 1/1/1900 smalldatetime) et d'un autre les millisecondes
écoulées depuis minuit pour le jour indiqué dans la date
Comment obtenir cette durées en secondes et/ou millisecondes , à part
utiliser une fonction scalaire qui utilisera datepart (hour, minute ...)
pour être plus précis comment recupérer ou "mapper" .en integer la valeur des deux (4)octects partie date et la valeur des deux (4) octets partie time.
Le cast de la date ne retourne pas la durée , mais après test , retourne le nombre de jours écoulés depuis 1/1/1900 , que la date soit déclarée en datetime ou smalldatetime
Philippe
"GLB" a écrit dans le message de news: eh%
Salut Philippe,
Ceci est tiré de l'aide
Microsoft SQL Server stocke de manière interne les valeurs de type datetime sous la forme de deux entiers de 4 octets. Les 4 premiers octets contiennent le nombre de jours écoulés avant ou après la date de base (base date) du 1er janvier 1900, qui sert de référence au système. Les valeurs datetime représentant des dates antérieures au 1er janvier 1753 ne sont pas autorisées. Les 4 autres octets stockent l'heure du jour représentée par le nombre de millièmes de seconde après minuit.
Le type de donnée smalldatetime stocke les dates et les heures du jour avec une précision inférieure à celle du type datetime. SQL Server stocke les valeurs smalldatetime sous la forme de deux entiers de 2 octets. Les deux premiers octets contiennent le nombre de jours après le premier janvier 1900. Les deux autres octets stockent le nombre de minutes écoulées après minuit. Ce type de données permet de stocker les dates comprises entre le 1er janvier 1900 et le 6 juin 2079, avec une précision d'une minute.
Dans le cas d'un datetime si tu cast avec un INT tu doit rcupérer les milisecondes et pour un smalldatetime tu cast avec un SmallINT !
ce ne sont que des suppositions :-)
Non testé
Gilles
Philippe a écrit :
Bonjour à tous,
Je pense avoir bien compris que SQL server stockent les dates et les heures séparément d'un coté les jours écoulés depuis une date (1/1/1753 : datetime ou 1/1/1900 smalldatetime) et d'un autre les millisecondes écoulées depuis minuit pour le jour indiqué dans la date
Comment obtenir cette durées en secondes et/ou millisecondes , à part utiliser une fonction scalaire qui utilisera datepart (hour, minute ...)
"Fred BROUARD" a écrit dans le message de news: eltjk$
Philippe a écrit :
Bonjour à tous,
Je pense avoir bien compris que SQL server stockent les dates et les heures séparément d'un coté les jours écoulés depuis une date (1/1/1753 : datetime ou 1/1/1900 smalldatetime) et d'un autre les millisecondes écoulées depuis minuit pour le jour indiqué dans la date
Comment obtenir cette durées en secondes et/ou millisecondes , à part utiliser une fonction scalaire qui utilisera datepart (hour, minute ...)
Que renvoie cast(myDate as bigint)
CAST (myDate AS FLOAT) vous renverra : partie entière => nombre de jour depuis 1/1/1900 partie fractionnaire => nombre de fraction de jour.
Ainsi, si CAST(myDate AS FLOAT) donne 37000.5 nous sommes le 21/4/2001 à midi. Pour le temps en minute : .5 * 24 * 60 = 720 minutes. etc
A +
Merci pour votre aide
Philippe CIA IT
-- Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com Audit, conseil, expertise, formation, modélisation, tuning, optimisation ********************* http://www.datasapiens.com ***********************
OK merci,
je n'avais pas eu le reflex du float
Philippe
"Fred BROUARD" <brouardf@club-internet.fr> a écrit dans le message de news:
eltjk$DUHHA.4260@TK2MSFTNGP06.phx.gbl...
Philippe a écrit :
Bonjour à tous,
Je pense avoir bien compris que SQL server stockent les dates et les
heures séparément d'un coté les jours écoulés depuis une date (1/1/1753
: datetime ou 1/1/1900 smalldatetime) et d'un autre les millisecondes
écoulées depuis minuit pour le jour indiqué dans la date
Comment obtenir cette durées en secondes et/ou millisecondes , à part
utiliser une fonction scalaire qui utilisera datepart (hour, minute ...)
Que renvoie cast(myDate as bigint)
CAST (myDate AS FLOAT) vous renverra :
partie entière => nombre de jour depuis 1/1/1900
partie fractionnaire => nombre de fraction de jour.
Ainsi, si
CAST(myDate AS FLOAT) donne 37000.5 nous sommes le 21/4/2001 à midi.
Pour le temps en minute :
.5 * 24 * 60 = 720 minutes.
etc
A +
Merci pour votre aide
Philippe
CIA IT
--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning, optimisation
********************* http://www.datasapiens.com ***********************
"Fred BROUARD" a écrit dans le message de news: eltjk$
Philippe a écrit :
Bonjour à tous,
Je pense avoir bien compris que SQL server stockent les dates et les heures séparément d'un coté les jours écoulés depuis une date (1/1/1753 : datetime ou 1/1/1900 smalldatetime) et d'un autre les millisecondes écoulées depuis minuit pour le jour indiqué dans la date
Comment obtenir cette durées en secondes et/ou millisecondes , à part utiliser une fonction scalaire qui utilisera datepart (hour, minute ...)
Que renvoie cast(myDate as bigint)
CAST (myDate AS FLOAT) vous renverra : partie entière => nombre de jour depuis 1/1/1900 partie fractionnaire => nombre de fraction de jour.
Ainsi, si CAST(myDate AS FLOAT) donne 37000.5 nous sommes le 21/4/2001 à midi. Pour le temps en minute : .5 * 24 * 60 = 720 minutes. etc
A +
Merci pour votre aide
Philippe CIA IT
-- Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com Audit, conseil, expertise, formation, modélisation, tuning, optimisation ********************* http://www.datasapiens.com ***********************