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



在将日期时间施放到浮点上时,您将偏移作为浮子。将其转换为INT仅给出一部分日期。到目前为止,我们要回到DateTime

时,我们有一个修剪日期

做同样的事情并直接转换为int返回日期只能在某些时候工作。

主要用于SQL Server

代码:

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

不工作:

CONVERT(datetime,CONVERT(Int,START_TIME_1))

有人知道为什么这是?

我被" Mikael Eriksson"给出了这个问题的答案。 - >"这是因为在从dateTime转换为int时,该值将四舍五入为最近的int。时间零件等于或大于12:00的DateTime值将被四舍五入到下一个整数/天。

显然,这是由于支持演员的支持和转换功能,这是一个过时的问题。更不用说应该使用DateTime2。

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

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

来自SQL Server 2008您可以使用日期数据类型。

select cast(getdate() as date)

铸造到float并使用floor函数也可以正常工作,但我认为上述替代方案是更喜欢的。

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

这是因为在从datetime转换为int时,该值将四舍五入为最近的intDatetime值等于或大于12:00的值将被舍入到下一个整数/天。

该行为记录在"截断和舍入结果"部分中的铸造和转换(Transact-SQL)中。

使用的语言?

尝试将其施放到Long或同等大整数中。

相关内容