【问题标题】:Set datetime variable to next day at 12 am using sql使用 sql 将日期时间变量设置为第二天上午 12 点
【发布时间】:2017-05-17 05:57:39
【问题描述】:
我正在编写一个 SQL 作业,我必须将计划运行标记设置为每天凌晨 12:00:00。日期格式应为 2017-05-10 00:00:00.000
我做过这样的事情。但我不知道如何设置确切的日期和时间(这很关键)。请帮忙
SET @ScheduledStStamp = GETDATE() + 1
【问题讨论】:
-
sql 用于 ANSI 标准语言。不幸的是,数据库产品的日期时间功能的工作方式差异很大。请为您的数据库产品(例如 Oracle、MySQL、SQL Server 等)编辑并添加标签。
标签:
sql
datetime
stored-procedures
job-scheduling
sql-job
【解决方案1】:
假设您需要将日期设置为明天的日期,请使用 Dateadd(d,1,getdate())。
然后先将该日期转换为 varchar(8),然后再转换回 datetime。这会将您的时间设置为 '00:00:00.000' 格式。
select convert(datetime,convert(varchar(8),Dateadd(d,1,getdate()),112))
如下分配你的变量
Declare @ScheduledStStamp datetime
SET @ScheduledStStamp =convert(datetime,convert(varchar(8),Dateadd(d,1,getdate()),112))
select @ScheduledStStamp
【解决方案2】:
我使用下面的代码得到了想要的结果
SET @ScheduledStStamp = CONVERT(DATETIME, CONVERT(DATE, GETDATE() + 1))
【解决方案3】:
今天的日期:
SELECT DATEADD(d,0,DATEDIFF(d,0,GETDATE()))
明天:
SELECT DATEADD(d,1,DATEDIFF(d,0,GETDATE()))
昨天:
SELECT DATEADD(d,-1,DATEDIFF(d,0,GETDATE()))