Sql server 2012 SQL日期作为查询的INT-to-Date
我在我的SQL Server的msdb数据库的msdb..sysjobhistory表上构建了一个查询。我只想把前一天的东西还给我。(在本例中,2015年1月14日将是昨天)当运行日期为YYYYMMDD整数格式时,我该怎么做Sql server 2012 SQL日期作为查询的INT-to-Date,sql-server-2012,datetime-format,Sql Server 2012,Datetime Format,我在我的SQL Server的msdb数据库的msdb..sysjobhistory表上构建了一个查询。我只想把前一天的东西还给我。(在本例中,2015年1月14日将是昨天)当运行日期为YYYYMMDD整数格式时,我该怎么做 SELECT server , jh.run_date , jh.run_time , j.name , jh.run_duration , jh.step_name , r
SELECT server
, jh.run_date
, jh.run_time
, j.name
, jh.run_duration
, jh.step_name
, run_status
, message
FROM msdb..sysjobhistory jh
INNER JOIN msdb..sysjobs j ON jh.job_id = j.job_id
WHERE jh.step_id = 0
请告知
-Nick您可以尝试先将该INT转换为VARCHAR,然后使用112“样式”(在MSDN页面上注明),将其转换为real DATETIME。例如:
选择CONVERT(日期时间,CONVERT(VARCHAR(10),20150115),112)
当然,单独这样做会使[run\u date]
字段(如果有)上的索引无效。如果是这种情况,那么您只需执行DATEADD以减一天,然后再转换回VARCHAR,再转换回INT。例如:
选择转换(INT,
转换(VARCHAR(10),
日期(日),
-1,
转换(日期时间,转换(VARCHAR(10),20150115),112)
),
112
)
);
在我的SQL Server 2012实例上,[run\u date]
上没有索引,但最好还是不要在函数周围加一个字段
如果只使用DATETIME
值,例如由GETDATE()
提供的值,它看起来像:
其中jh.step\u id=0
和jh.run_date=CONVERT(INT,
转换(VARCHAR(10),
DATEADD(天-1,GETDATE()),
112)
)
这给了我所需要的。我只是简单地获取这些数据,将其输入到我正在为内部DBA审计应用程序创建的数据库中。这工作做得很好。谢谢你,@srutzky@没问题。一定要看到我刚刚发布的更新。