如何运行SQL Server的当天查询

如何运行SQL Server的当天查询,sql,datetime,sql-server-2008-r2,Sql,Datetime,Sql Server 2008 R2,我正在创建一个包,每十五分钟运行一次,并将csv文件写入共享文件夹。我被这个问题难住了。我只需要将查询返回到当天上午12:00。一旦到了第二天,我只需要在同一天运行查询,而不需要返回到前一天 我试过这个 DATEADD(dd, 0, DATEDIFF(dd, 0, GETDATE() - 1)) 但很明显,这并没有产生我所需要的结果 查询中的所有其他内容都很好,我正在收到所需的适当数据。但是,我现在正在设置日期,这是没有效率的 非常感谢您的帮助。我不是SQL Server专家,在TechNet

我正在创建一个包,每十五分钟运行一次,并将csv文件写入共享文件夹。我被这个问题难住了。我只需要将查询返回到当天上午12:00。一旦到了第二天,我只需要在同一天运行查询,而不需要返回到前一天

我试过这个

DATEADD(dd, 0, DATEDIFF(dd, 0, GETDATE() - 1))
但很明显,这并没有产生我所需要的结果

查询中的所有其他内容都很好,我正在收到所需的适当数据。但是,我现在正在设置日期,这是没有效率的


非常感谢您的帮助。我不是SQL Server专家,在TechNet文档中苦读有很多信息。我只是很难将他们的信息连接到我的实现。

您可以使用以下方法获取当前日期(我相信还有许多其他方法)

正如-1评论所指出的,使用带日期的varchars是一个坏主意(尽管每个人似乎都在这样做。另一个解决方案是:

SELECT CONVERT(DATE, GETDATE()))
SELECT DATEADD(dd, 0, DATEDIFF(dd, 0, GETDATE()))
不过,在特定版本的SQL server之前,这是不起作用的

另一种方法是:

SELECT CONVERT(DATE, GETDATE()))
SELECT DATEADD(dd, 0, DATEDIFF(dd, 0, GETDATE()))
我相信这对所有sql server版本都有效(尽管我觉得最难理解)

内部(convert varchar)提供没有时间的日期,然后将其转换回日期格式

因此,对于您的查询,您可以使用

DECLARE @today DATETIME
SET @today = (SELECT CONVERT(DATE, GETDATE()))

SELECT *
FROM table
WHERE date >= @today

您可以直接使用date(now()),默认情况下需要00:00:00时间。

如果您使用的是SQL Server 2008+,您只需使用:

SELECT CAST(GETDATE() AS DATE)

获取当前日期。

这是什么DBMS?现在()和日期()不是MSSQL的sql函数-虽然OP没有指定DBMS,所以我很好奇。哦..我用PostgreSql回答了我放在Microsoft sql中的标题。这就是你要找的信息吗?你使用的是哪种DBMS?应该使用它作为你的标记之一,因为DBMSssorry和Microsoft sql 2008之间的sql语法可能不同,我觉得很简单了解st解决方案(同时仍在使用我所知道的所有sql server版本)。