按照今天(当前)日期显示数据的SQL查询?

8
我正在尝试仅从数据库中获取当前日期的记录,以下是我尝试过的查询语句,但从表中未获取到任何记录:
SELECT *
FROM Transactions
WHERE transaction_date = GETDATE(); 

它不仅比较日期,还比较时间部分。我认为你不会在日期+时间上有完全相同的交易。尝试仅比较日期部分而不是日期和时间。 - Ranjana Ghimire
那么我应该如何修改这个查询呢?先生,您能帮我吗? - Kamran Ashiq
4个回答

5

现在是当前日期,所以未来日期的记录不存在。您只需要获取今天大于00:00:00的所有交易。

SELECT * FROM `Transactions` WHERE transaction_date >= CURRENT_DATE+" 00:00:00";

3

只需比较日期部分。

   Select *from Transactions
        WHERE 
    CONVERT(char(10), transaction_date  ,126)=CONVERT(char(10), getdate(),126);

3
DATETIME 转换为 DATE 比转换为 字符串 更好,始终使用最合适的数据类型 - 不要仅仅因为方便和可行就将所有内容都转换为字符串。 - marc_s

2

将日期存储在变量中,并在查询中连接它。

请参见下面:

var currentDate = DateTime.Now.ToString("yyyy-MM-dd");
query = "select * from table where Date = " + currentDate;

2
您可以将时间重置为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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接