现在我们需要查询这天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
推荐访问: