2017-08-20 123 views
4

我试图从当前日期只有在这里数据库中获取的记录是我试图BU从表中获取任何记录查询:通过今天(当前)日期显示数据的SQL查询?

SELECT * 
FROM Transactions 
WHERE transaction_date = GETDATE(); 
+0

它比较不仅仅是日期,还有时间部分。我不认为你会有日期+时间的确切交易。尝试比较刚才的日期部分不是日期和时间 –

+0

那么我应该如何修改这个查询先生你能帮我解决吗? –

回答

2

只是比较日期部分

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

将* DATETIME转换为'DATE'而不是转换为**字符串将会*更好*总是使用**最合适的**数据类型 - 不要总是把所有东西都转换成一个字符串,因为它很简单并且工作正常..... –

1

存储在一个变量的日期和CONCAT它在查询

见下图:

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

它在“yyy-MM-dd”附近显示语法错误 –

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 
相关问题