这曾经适用于列类型,DATEIME
但现在不适用于DATE
.
CONVERT(BIGINT,ev.StartDate) * -1
无论如何BIGINT
要从DATE
列中获取值吗?
这曾经适用于列类型,DATEIME
但现在不适用于DATE
.
CONVERT(BIGINT,ev.StartDate) * -1
无论如何BIGINT
要从DATE
列中获取值吗?
您可以cast
将开始日期作为datetime
转换。
CONVERT(BIGINT,CAST(ev.StartDate as DATETIME)) * -1
又一个选择。这甚至会为你翻转标志
例子
Declare @YourTable table (StartDate date)
Insert Into @YourTable values ('2017-05-30')
Select DateDiff(DAY,StartDate,-1)
From @YourTable
退货
-42884
首先,SQL Server 中的日期从 1900 年开始按天数计算。大 int 在大约 21 亿时开始有用。这对应于 580 万范围内的一年。你真的有这么大的约会吗?
当然,int
不允许强制转换为 an。您可以转换datetime
值。. . 但还有其他方法吗?
一种简单的方法是:
select 1 + datediff(day, 0, datecol)
需要“+ 1”,以便该值与实际转换匹配。(您可以使用“-1”代替“0”。)
或者,也许您希望 Unix 时间以秒或毫秒为单位。为了那个原因:
select datediff_big(ms, '1970-01-01', datecol)
您可能需要先转换为 varchar,然后再转换为 bigint
select Convert(bigint,convert(varchar(10),ev.StartDate,112))*(-1)