我正在创建一个每十五分钟运行一次的软件包并将csv文件写入共享文件夹。我坚持查询。我需要查询才能回到当天的凌晨12点。一旦它第二天,我需要让查询仅在同一天运行,而不是回到前一天。
我试过这个
DATEADD(dd, 0, DATEDIFF(dd, 0, GETDATE() - 1))
但很明显,这并不能产生我需要的结果。
查询上的其他所有内容都很好,我收到了我需要的相应数据。但是,我此时设置日期并且效率不高。
非常感谢任何帮助。我不是SQL Server专家,在TechNet文档中跋涉有很多信息。我很难将他们的信息与我的实施联系起来。
答案 0 :(得分:2)
如果您使用的是SQL Server 2008 +,则可以使用:
SELECT CAST(GETDATE() AS DATE)
获取当前日期。
答案 1 :(得分:0)
您可以使用以下内容获取当前日期(我确信还有许多其他方法)
SELECT CONVERT(DATETIME, CONVERT(VARCHAR(10)DATE, GETDATE(), 101))
正如-1注释指出使用带有日期的varchars是一个坏主意(尽管每个人似乎都是这样做。另一个解决方案是:
SELECT CONVERT(DATE, GETDATE()))
虽然这在SQL服务器的特定版本之前不起作用。
另一种方法是:
SELECT DATEADD(dd, 0, DATEDIFF(dd, 0, GETDATE()))
我相信它可以在所有sql server版本上运行(虽然我觉得最难理解)
内部(转换varchar)为您提供没有时间的日期,然后将其转换回日期格式。
因此,对于您的查询,您可以使用
DECLARE @today DATETIME
SET @today = (SELECT CONVERT(DATE, GETDATE()))
SELECT *
FROM table
WHERE date >= @today
答案 2 :(得分:0)
您可以直接使用日期(now()),默认情况下需要00:00:00。