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