sql server datetime pour bigint (à l'époque) à débordement
J'ai un 'datetime' colonne avec la valeur 2013-03-22 15:19:02.000
J'ai besoin de convertir cette valeur en époque et de le stocker dans un "bigint" champ
La véritable époque de la valeur pour le ci-dessus le temps est,
1363945741898
lorsque j'utilise
select DATEDIFF(s, '1970-01-01 00:00:00', '2013-03-22 15:19:02.000')
Je reçois,
1363965542
lorsque j'utilise
select DATEDIFF(ms, '1970-01-01 00:00:00', '2013-03-22 15:19:02.000')
Je reçois,
Msg 535, Niveau 16, État 0, La Ligne 1
La fonction datediff a entraîné un dépassement de capacité. Le nombre de dateparts séparant deux date/heure de cas est trop grand. Essayez d'utiliser datediff avec un moins précis datepart.
Comment obtenir le exacte époque valeur de la 'datetime' champ
J'utilise sql server 2008. Aussi cela devrait fonctionner avec 2005.
Grâce.
Quel fuseau horaire est votre datetime? Regarde quelques heures et une demi-heure de l'heure GMT. Peut-être en Inde? (Je me demande si SQL Server est peut-être l'aide d'GMT pour le fuseau horaire pour 1970-01-01 comme il ne dispose pas d'informations sur le fuseau horaire d'aller aussi loin en arrière, et votre fuseau horaire local pour 2013.)
Vous dites que vous voulez à l'époque de valeur = temps unix, et c'est en secondes, alors pourquoi ne vous interrogez la différence en quelques millisecondes dans la deuxième requête?
IST inde
Hrm. Par curiosité, qu'est -
Je doit le stocker dans milli sec
Vous dites que vous voulez à l'époque de valeur = temps unix, et c'est en secondes, alors pourquoi ne vous interrogez la différence en quelques millisecondes dans la deuxième requête?
IST inde
Hrm. Par curiosité, qu'est -
select DATEDIFF(s, '1970-01-01 00:00:00Z', '2013-03-22 15:19:02Z')
vous donner? (En utilisant le Z devrait se traduire int datetimeoffset basées sur l'heure GMT, plutôt que d'un datetime.)Je doit le stocker dans milli sec
OriginalL'auteur itsraja | 2013-03-26
Vous devez vous connecter pour publier un commentaire.
Ici est un exemple, pas testé, écrit de la main libre 🙂
Modifier
J'ai pris cette exemple ci-dessous pour illustrer le fuseau horaire de conversion. Le timbre de temps (en secondes où j'ai supprimé les trois derniers chiffres "898") est ici converti à l'locale IST fuseau horaire par adjonction de l'5,5 heures (19800 secondes) et je la convertir à l'horodatage de l'heure locale GMT encore. Ci-dessous les calculs en adéquation avec les valeurs de la question (en secondes).
J'ai essayé de convertir les valeurs entières sur epochconverter.com et 1363945741898 est évalué à Fri, 22 Mar 2013 09:49:01 GMT donc je ne sais pas comment vous avez calculé-vous de la valeur depuis que vous l'obtenir pour 2013-03-22 15:19:02.000
dans mon fuseau horaire il est, le vendredi, Mars 22, 2013 3:19:01 PM GMT+5.5
J'ai ajouté un exemple de la réponse où je convertir de et retour entre le GMT et les IST.
La solution est de travailler pour vous?
OriginalL'auteur aweis
Lorsqu'on l'a essayé d'obtenir exacts millisecondes nous obtenons l'exception de dépassement de capacité. nous pouvons obtenir les valeurs jusqu'secondes et multipliez par 1000.
C'est l'équivalent de new Date().getTime() en javascript :
Utiliser la déclaration ci-dessous pour obtenir le temps en secondes.
Utiliser la déclaration ci-dessous pour obtenir le temps en millisecondes.
convertir d'une époque à l'lisible par l'homme date heure à l'aide de déclaration ci-dessous:
Arithmetic overflow error converting expression to data type int.
si vous avez une grande date.OriginalL'auteur S Kotra