Datetime int float,为什么我们可以浮动而不是int

时间:2014-02-04 15:18:39

标签: sql sql-server datetime int

将日期时间转换为浮点数时,您将获得浮动的偏移量。 将其转换为int仅提供部分日期。 到目前为止,我们回到日期时间的日期已经缩短了

执行相同操作并直接转换为int 并且回到日期时间只在某些时候有效。

主要用于sql server

代码:

CONVERT(datetime,floor(CONVERT(float,START_TIME_1)))

不工作:

CONVERT(datetime,CONVERT(Int,START_TIME_1))

任何人都知道这是为什么?

2 个答案:

答案 0 :(得分:1)

要删除SQL Server 2005中的时间部分,可以使用:

select dateadd(day, datediff(day, 0, getdate()), 0)

从SQL Server 2008中,您可以使用日期数据类型。

select cast(getdate() as date)

转换为float并使用floor功能也可以正常工作,但我认为上述替代方案更适合。

您的问题是,integer的演员有时会返回错误的值。

这是因为从datetime转换为int时,该值会四舍五入到最接近的int。时间部分等于或大于12:00的Datetime值将向上舍入到下一个整数/天。

行为记录在CAST and CONVERT (Transact-SQL)的“截断和舍入结果”部分中。

答案 1 :(得分:-1)

使用的语言?

尝试将其转换为Long或等效的大整数。