我正在尝试仅从数据库中获取当前日期的记录,以下是我尝试过的查询语句,但从表中未获取到任何记录:
SELECT *
FROM Transactions
WHERE transaction_date = GETDATE();
SELECT *
FROM Transactions
WHERE transaction_date = GETDATE();
现在是当前日期,所以未来日期的记录不存在。您只需要获取今天大于00:00:00
的所有交易。
SELECT * FROM `Transactions` WHERE transaction_date >= CURRENT_DATE+" 00:00:00";
只需比较日期部分。
Select *from Transactions
WHERE
CONVERT(char(10), transaction_date ,126)=CONVERT(char(10), getdate(),126);
DATETIME
转换为 DATE
比转换为 字符串 更好,始终使用最合适的数据类型 - 不要仅仅因为方便和可行就将所有内容都转换为字符串。 - marc_s将日期存储在变量中,并在查询中连接它。
请参见下面:
var currentDate = DateTime.Now.ToString("yyyy-MM-dd");
query = "select * from table where Date = " + currentDate;
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