[mssql日期时间数据类型]Mssql日期时间数据查询不到解决办法

时间:2019-06-12  来源:Mssql  阅读:

现在我们需要查询这天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)

[mssql日期时间数据类型]Mssql日期时间数据查询不到解决办法

http://m.bbyears.com/shujuku/54304.html

推荐访问:
相关阅读 猜你喜欢
本类排行 本类最新