不允许从数据类型日期到bigint的显式转换

时间:2017-05-30 20:39:08

标签: sql sql-server bigint sqldatetime sql-convert

以前使用的列类型为const addPrefix = str => str[0].split('\n').map(s => `> ${s}`).join('\n'); let str = addPrefix`Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum pellentesque`; console.log(str);,但现在不会与DATEIME一起使用。

DATE

无论如何从CONVERT(BIGINT,ev.StartDate) * -1 列获得BIGINT值?

4 个答案:

答案 0 :(得分:4)

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

CONVERT(BIGINT,CAST(ev.StartDate as DATETIME)) * -1

答案 1 :(得分:2)

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

示例

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

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

<强>返回

-42884

答案 2 :(得分:2)

首先,SQL Server中的日期按1900年的天数计算。一个大的int开始有用,大约21亿。这相当于580万的一年。你真的有大日期吗?

当然,不允许转换为int。您可以投射datetime个值。 。 。但还有其他方法吗?

一种简单的方法是:

select 1 + datediff(day, 0, datecol)

&#34; + 1&#34;需要,以便该值与实际转换匹配。 (您可以使用&#34; -1&#34;而不是&#34; 0&#34;而不是。)

或许,您可能希望Unix时间以秒或毫秒为单位。为此:

select datediff_big(ms, '1970-01-01', datecol)

答案 3 :(得分:0)

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

select Convert(bigint,convert(varchar(10),ev.StartDate,112))*(-1)