tsql - 查询之间的 T-SQL 日期
问题描述
T-SQL(2005)中从 X 日期到今天获取结果的最有效方法是什么?
属性是RegistrationDate
并且是日期/时间格式,例如Monday, July 15, 2019 12:00 AM
我正在寻找RegistrationDate
从 8 月 20 日到今天的记录,因为这个查询每天都会运行。
当前查询在此要求方面存在一些问题:
cast(a.RegistrationDate as date) = cast(GETDATE() BETWEEN '2019-20-10 00:00:00.0' and GETDATE() as date)
解决方案
SQL Server 2005 早就不支持了,你为什么还在使用它?如果您确实仍在使用 SQL Server 2005,那么您升级的时间已经过去很久了,您确实需要尽快查看升级路径。没有受支持的 SQL Server 版本支持从 2005 升级;最新版本是 2014,仅提供扩展支持。
但是,对于您要问的内容,除了明显的语法错误外,该date
数据类型在诸如旧版本的 SQL Server 中不存在。因此,最好的方法是使用 useDATEADD
和DATEDIFF
。我还假设您的陈述“是日期/时间格式,例如Monday, July 15, 2019 12:00 AM
”是错误的;datetime
数据类型没有格式。
尽我所能(如果我不得不)做以下事情:
DECLARE @DateStart = '20190101',--First date in range
@DateEnd = '20200101'; --First date outside of range
SELECT ...
FROM ...
WHERE DateTimeColumn >= @DateStart
AND DateTimeColumn < @DateEnd;
如果你想GETDATE()
开始(当前)一天,那么你会这样做:
DATEADD(DAY, DATEDIFF(DAY, 0, GETDATE()), 0)
推荐阅读
- vba - DIR function retrieving the file, but not the file name
- php - php将mysql结果存储到memcache
- cypher - geohashTrie 用于位置节点
- docker - Docker 群网络 DNS
- cakephp - 如何在 cakephp 分页中设置 maxLimit
- c# - 无法通过派生类使用 ObservableCollection 方法更新 ListView
- r - 如何在 R 中使用 apply 来设置所需列的子集,其余的则用空格填充?
- neural-network - Caffe:这两个网络有什么区别?
- c# - TransactionScope 中的 DbContext.SaveChanges() 可见性
- sql - 如何在没有关系的情况下加入基地?