Mssql日期时间数据查询不到解决办法

作者:袖梨 2022-06-29

现在我们需要查询这天2014-06-21的所有记录:

 代码如下 复制代码

SELECT * FROM [A] WHERE [B] = '2014-06-21'

上面的语法,将查询不到任何记录。也许会有网友想到使用BETWEEN:

 代码如下 复制代码

SELECT * FROM [A] WHERE [B] BETWEEN '2014-06-21 00:00:00' AND '2014-06-21 23:59:59'

这样指定日期范围,确实可以查询到这天的数据记录,但是如果[B]有存储2014-06-21 23:59:59.xxx这样时间的话,这笔记录将会查询不出来

我们可以使用DATEADD函数,来实现,以当前日期的午夜时间值加一天,即得到第二天的午夜时间值,然后再减去2秒,即可以获取当前系统日期的最大时间值。

 代码如下 复制代码


DECLARE @Date DATETIME  = CURRENT_TIMESTAMP --当前系统日期时间

DECLARE @midnight DATETIME
SET @midnight = CAST(CAST(@Date AS DATE) AS DATETIME)
SELECT DATEADD(ms,-2,DATEADD(day,1,@midnight))  --2011-09-09 23:59:59.997

下面是Insus.NET的方法,此方法只能在SQL Server 2008或更高版本上应用,因为在这个版本才有DATE和TIME数据类型。

 代码如下 复制代码

版本1:

SELECT CAST((CAST(CAST(CURRENT_TIMESTAMP AS DATE) AS CHAR(10)) + ' ' + '00:00:00.000') AS DATETIME)

版本2:

SELECT CAST(CAST(CURRENT_TIMESTAMP AS DATE) AS DATETIME)

相关文章

精彩推荐