我正在进行一个查询,无论时间如何都会获取当前日期的记录,如何在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 。
感谢。
答案 0 :(得分:4)
您可以将查询表达为:
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)
如果可以的话,这个版本可以保证使用适当的索引。
答案 1 :(得分:2)
CONVERT(VARCHAR, GETDATE(), 120)
会将日期设为ISO格式,然后SUBSTRING将只获得日期部分:
SELECT *
FROM sometable
WHERE date = SUBSTRING(CONVERT(VARCHAR, GETDATE(), 120), 1, 10)
答案 2 :(得分:0)
请尝试以下
SELECT * FROM sometable where DATEDIFF(DAY, date,GETDATE())=0;
由于
答案 3 :(得分:0)
您可以尝试CAST:像这样:
SELECT CAST(GETDATE() AS DATE)
SELECT CAST(date AS DATE) FROM UserMaster where date = GETDATE();
答案 4 :(得分:0)
由于您的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子句:
WHERE date = convert(char(10), GETDATE(), 126)
这是将包含的间隔。不包括todate:
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