现在我们需要查询这天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 @midnight DATETIME |
下面是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) |