从 SQL Server GETDATE() 函数中删除日期时间中的日期



我正在进行一个查询,无论时间如何,都可以获取当前日期的记录,如何在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

相关内容

  • 没有找到相关文章

最新更新