这用于使用列类型DATEIME
,但现在不会与DATE
一起使用。不允许从数据类型date到bigint的显式转换
CONVERT(BIGINT,ev.StartDate) * -1
反正有获得从DATE
列BIGINT
价值?
这用于使用列类型DATEIME
,但现在不会与DATE
一起使用。不允许从数据类型date到bigint的显式转换
CONVERT(BIGINT,ev.StartDate) * -1
反正有获得从DATE
列BIGINT
价值?
另一个选择。这甚至将翻转标志为您
例
Declare @YourTable table (StartDate date)
Insert Into @YourTable values ('2017-05-30')
Select DateDiff(DAY,StartDate,-1)
From @YourTable
返回
-42884
您可以将cast
的开始日期作为datetime
进行转换。
CONVERT(BIGINT,CAST(ev.StartDate as DATETIME)) * -1
'startDate'的数据类型是什么? –
您可能需要转换为varchar,然后BIGINT
select Convert(bigint,convert(varchar(10),ev.StartDate,112))*(-1)
首先,在SQL Server的日期是由天从1900年的一大INT计在21亿美元左右开始有用。这相当于一年580万的范围内。你的日期真的很大吗?
当然,铸造到int
是不允许的。您可以投射datetime
值。 。 。但有其他方法吗?
一种简单方式是:
select 1 + datediff(day, 0, datecol)
的 “+ 1”,需要这样的值的实际转换相匹配。 (您可以使用“-1”代替“0”。)
或者,也许您希望Unix时间以秒或毫秒为单位。对于:
select datediff_big(ms, '1970-01-01', datecol)
为什么不直接使用'选择DATEDIFF(日, '1900年/ 01/01',ev.StartDate)'和避免它一起.... – scsimon
如果要转换日期的整数, ) –
'SELECT CAST(CAST('2017-05-30 00:00:00.000'as datetime)AS decimal(8,2))''将返回'42883'并且返回'SELECT CAST(CAST('2017-05-30 12:00:00.000'AS datetime)为十进制(8,2))'将返回'42883.50',因此每一天都代表一个单一的数字,从1900年开始。 –