是否使用SQL查询按今天(当前)日期显示数据?
我正在尝试从数据库中获取当前日期的记录,仅此为我尝试过的查询,但未从表中获取任何记录:是否使用SQL查询按今天(当前)日期显示数据?,sql,sql-server,database,Sql,Sql Server,Database,我正在尝试从数据库中获取当前日期的记录,仅此为我尝试过的查询,但未从表中获取任何记录: SELECT * FROM Transactions WHERE transaction_date = GETDATE(); 将日期存储在变量中,并在查询中对其进行加密 见下文: var currentDate = DateTime.Now.ToString("yyyy-MM-dd"); query = "select * from table where Date = " + currentDate;
SELECT *
FROM Transactions
WHERE transaction_date = GETDATE();
将日期存储在变量中,并在查询中对其进行加密 见下文:
var currentDate = DateTime.Now.ToString("yyyy-MM-dd");
query = "select * from table where Date = " + currentDate;
您可以将时间删除/重置为00:00,这将允许对今天进行比较
select DATEADD(dd, DATEDIFF(dd, 0, getdate()), 0)
您可以使用今天的开始日期和结束日期定义变量,如下所示:
declare @TodayStart datetime = getdate()
declare @TodayEnd datetime = getdate()
set @TodayStart = DATEADD(dd, DATEDIFF(dd, 0, getdate()), 0) -- example: 2017-08-20 00:00:00.000
set @TodayEnd = DATEADD(ss, -1, DATEADD(dd, 1, @TodayStart)) -- example: 2017-08-20 23:59:59.000
因此,获取今天日期范围内的所有交易的查询将变为:
Select *from Transactions
WHERE transaction_date between @TodayStart AND @TodayEnd
比较一下日期部分
Select *from Transactions
WHERE
CONVERT(char(10), transaction_date ,126)=CONVERT(char(10), getdate(),126);
它是当前日期,因此具有未来日期的记录不存在。您只需要获取今天大于
00:00:00
的所有事务
SELECT * FROM `Transactions` WHERE transaction_date >= CURRENT_DATE+" 00:00:00";
它不仅比较日期,还比较时间段。我想你在日期+时间上不会有确切的交易。试着只比较日期部分而不是日期和时间,那么我应该如何修改这个查询,先生,你能帮我吗?最好将
DATETIME
转换成date
而不是转换成字符串。。。。。始终使用最合适的数据类型-不要总是将所有内容都转换为字符串,因为这很简单而且有效。。。。。