1

这曾经适用于列类型,DATEIME但现在不适用于DATE.

CONVERT(BIGINT,ev.StartDate) * -1

无论如何BIGINT要从DATE列中获取值吗?

4

4 回答 4

5

您可以cast将开始日期作为datetime转换。

CONVERT(BIGINT,CAST(ev.StartDate as DATETIME)) * -1
于 2017-05-30T20:41:16.527 回答
2

又一个选择。这甚至会为你翻转标志

例子

Declare @YourTable table (StartDate date)
Insert Into @YourTable values ('2017-05-30')

Select DateDiff(DAY,StartDate,-1)
 From @YourTable

退货

-42884
于 2017-05-30T20:46:30.520 回答
2

首先,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)
于 2017-05-30T20:47:24.253 回答
0

您可能需要先转换为 varchar,然后再转换为 bigint

select Convert(bigint,convert(varchar(10),ev.StartDate,112))*(-1)
于 2017-05-30T20:42:47.570 回答