为什么 ss 舍入到最接近的会改变日期的分钟

2024-03-25

我正在使用 sql server 2008 R2,由于一个问题,我能够知道smalldatetime 将 ss 舍入到最近的分钟。这是来自 MSDN 的内容。

ss is two digits, ranging from 00 to 59, that represent the second. Values that are 29.998 seconds or less are rounded down to the nearest minute, Values of 29.999 seconds or more are rounded up to the nearest minute.

现在我面临一个问题,因为我的参数类型storedproceduer我经过时是小日期时间'2014-03-23 23:59:59'它转换为日期2014-03-24 00:00:00

我找到了我应该从中转换参数的解决方案smalldatetime to nvarchar(30)

并解决了问题。

但我真正的问题是为什么这样的行为smalldatetime四舍五入ss那改变的日子?

你可以尝试使用以下查询

DECLARE @EndDate smallDatetime
SET @EndDate = '2014-03-23 23:59:59'
SELECT @EndDate

DECLARE @EndDate smallDatetime
SET @EndDate = '2014-03-23 23:59:30'
SELECT @EndDate

DECLARE @EndDate smallDatetime
SET @EndDate = '2014-03-23 23:59:29'
SELECT @EndDate

每当我看到有人使用时,我的脑海里就会响起警钟23:59:59 in SQL.

这几乎总是因为他们希望通过执行以下操作在查询中返回一整天的数据:

WHERE  date_field BETWEEN '2014-03-19 00:00:00' AND '2014-03-19 23:59:59'

这是因为BETWEEN包括边界值,您可能不希望值位于2014-03-20 00:00:00包括。

上述查询相当于:

WHERE  date_field >= '2014-03-19 00:00:00'
AND    date_field <= '2014-03-19 23:59:59'

正确的方法

WHERE  date_field >= '2014-03-19 00:00:00'
AND    date_field <  '2014-03-20 00:00:00'

请注意运算符之间的细微差别。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么 ss 舍入到最接近的会改变日期的分钟 的相关文章

随机推荐