是否使用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
而不是转换成字符串。。。。。始终使用最合适的数据类型-不要总是将所有内容都转换为字符串,因为这很简单而且有效。。。。。