我正在进行一个查询,无论时间如何,都可以获取当前日期的记录,如何在SQL Server上进行查询?我的 SQL Server 版本不支持 DATE 进行转换。我想要这样的格式:
2013-06-20
例如,我的查询是:
SELECT * FROM sometable where date = GETDATE();
其中GETDATE()
格式为 2015-06-19 19:12:10.953。我希望查询中的它是 2015-06-19。
谢谢。
您可以将查询表示为:
SELECT *
FROM sometable
WHERE date = cast(GETDATE() as date);
但是,另一种表达方式是:
SELECT *
FROM sometable
WHERE date >= cast(GETDATE() as date) and
date < cast(dateadd(day, 1, GETDATE()) as date)
此版本更能保证使用适当的索引(如果可用)。
CONVERT(VARCHAR, GETDATE(), 120)
会将日期转换为ISO格式,然后SUBSTRING将仅获得日期部分:
SELECT *
FROM sometable
WHERE date = SUBSTRING(CONVERT(VARCHAR, GETDATE(), 120), 1, 10)
请尝试以下操作
SELECT * FROM sometable where DATEDIFF(DAY, date,GETDATE())=0;
谢谢
你可以试试 CAST : 像这样:
SELECT CAST(GETDATE() AS DATE)
SELECT CAST(date AS DATE) FROM UserMaster where date = GETDATE();
由于您的 sqlserver 版本不支持 DATE 转换(您必须使用 sqlserver 2005 或更早版本),因此您需要重新计算 getdate()。
SELECT *
FROM
sometable
WHERE
date >= dateadd(d, datediff(d,0, GETDATE()), 0)
and date < dateadd(d, datediff(d,0, GETDATE()), 1)
如果你的日期被声明为 char(10) 或类似,你可以简单地使用 where 子句:
WHERE date = convert(char(10), GETDATE(), 126)
这是将包括的间隔。不包括目前:
SELECT
dateadd(d, datediff(d,0, GETDATE()), 0) fromdate,
dateadd(d, datediff(d,0, GETDATE()), 1) todate
结果:
fromdate todate
2015-06-19 00:00:00.000 2015-06-20 00:00:00.000