问题: Microsoft SQL 2016 每个季度,我的应用程序都会创建一个新的存档数据库来存每个季度我都会针对前一季度存档数据库手动运行查询,以收集数据用于分析目的。
我有一个运行查询的PowerShell脚本,但是,我仍然必须更新PowerShell自动化以指定我想要运行查询的存档数据库。
示例:
ArchiveDB_Q1_2016 ArchiveDB_Q1_2017 ArchiveDB_Q2_2016 ArchiveDB_Q2_2017 ArchiveDB_Q3_2016 ArchiveDB_Q3_2017 ArchiveDB_Q4_2016 ArchiveDB_Q4_2017
今天是10/9/17我想运行ArchiveDB_Q3_2017的查询。
在我的PowerShell中,我指定了要查询的数据库($dbName = 'ArchiveDB_Q3_2017'
)。
2018年1月2日,我想运行ArchiveDB_Q4_2017的查询。目前,我必须打开我的PowerShell脚本,更新数据库名称,保存,然后执行脚本。
我希望能够自动执行这些查询,这样无论我们处于哪个季度,我总是在前一季度存档数据库中运行查询。
我如何做到这一点?
我是否可以在PowerShell中使用命令或字符串来解释数据库名称更改,或者使用查看上一季度存档数据库的SQL查询创建文本文档更容易,然后使用PowerShell从该查询中提取结果以传入我的PowerShell脚本中的数据库参数,以便在其余查询中使用?
答案 0 :(得分:1)
您可以使用整数除法确定当前季度:
$today = (Get-Date).Date
$current = [Math]::Floor(($today.Month - 1) / 3) + 1
上一季度为$current - 1
,但有一个例外:第一季度上一季度为4年,当年年份减去一年。
$prev = $current - 1
$year = $today.Year
if ($prev -eq 0) {
$prev = 4
$year = $year - 1
}
使用这两个值,您可以简单地构建数据库名称,如下所示:
$dbName = "ArchiveDB_Q${prev}_${year}"