sql - 为什么 SQL 将精确的日期时间更改一格

标签 sql sql-server

DECLARE @dateEnd datetime
SET @dateEnd = '2014-11-30T23:59:59.999'
SELECT @dateEnd

为什么我得到结果: 2014-12-01 00:00:00.000

我想使用变量作为 SELECT 条件:

where [MyDate] between @dateStart and @dateEnd

这是另一个问题,但相关。我希望包含第一个数据点 (dataStart),并将第二个数据点 (dataEnd) 从选定的数据范围中排除。怎么做?

最佳答案

datetime 的时间范围是“00:00:00 到 23:59:59.997”。在“0.999”处,该值将四舍五入到最接近的秒,这恰好是第二天的开始,从而得出所描述的结果。但郑重声明,“.998”将保留当天“23:59:59”的时间部分。

MSDN

Demo

关于sql - 为什么 SQL 将精确的日期时间更改一格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27818922/

相关文章:

sql-server - 在 SQL Server 2012 中将 varbinary() 转换为 varchar(max) 时如何编码特定语言的字符?

php - 用php连接csv中的部分行

php - 将用户详细信息与 HTML 一起包含在我的数据库中

c# - 在 sql_variant 列的表值参数中传递类型为 'object' 的参数

mysql - 在同一 select 语句中计算具有不同条件的相同 id 列

sql-server - 在 R 中执行 SQL Server 存储过程

sql - 使用 BIT 数据类型过滤 WHERE 子句中的查询

php - 使用连接语句和子查询的 CakePHP 查询准备

android - 在 Android 上的 SQL 数据库中存储日期和时间

按销售代表进行 SQL 分组 - 选择 2 个计数