dates d'abord, dans SQL Server sont comptés par jours à compter de l'année 1900. Un grand int commence à être utile à environ 2,1 milliards. Cela correspond à une année de l'ordre de 5,8 millions. Avez-vous vraiment des dates aussi grandes?
Bien sûr, la diffusion vers un int
n'est pas autorisée. Vous pouvez émettre des valeurs datetime
. . . mais y a-t-il d'autres moyens?
Une façon simple est:
select 1 + datediff(day, 0, datecol)
Le "+ 1" est nécessaire pour la valeur correspond à la conversion réelle. (Vous pouvez utiliser "-1" au lieu de "0" à la place.)
Ou, peut-être souhaitez-vous un temps Unix en secondes ou en millisecondes. Pour cela:
select datediff_big(ms, '1970-01-01', datecol)
pourquoi ne pas simplement utiliser 'select datediff (jour, '1900/01/01', ev.StartDate)' et éviter tous ensemble .... – scsimon
Si vous convertissez des dates pour des entiers, vous allez pour JOUR que vous le sachiez ou non;) –
'SELECT CAST (CAST ('2017-05-30 00: 00: 00.000' comme datetime) AS decimal (8,2))' retournera '42883' et 'SELECT CAST (CAST ('2017-05-30 12: 00: 00.000' AS datetime) comme décimal (8,2))' retournera '42883.50' donc chaque jour est représenté comme un nombre unique, commençant à l'année 1900 –