如何调整SQL Server备份文件名中的日期格式?
修正后的SQL脚本(日期格式调整)
问题出在你使用的CONVERT样式113,它会生成带月份缩写的日期格式。要得到01-09-2023-09:00:00这种格式,有两种可靠的实现方式:
方案1:兼容所有SQL Server版本(使用CONVERT拼接)
通过组合不同的日期转换样式,拼接出目标格式:
DECLARE @filename varchar(500) DECLARE @db1 varchar(500) DECLARE @url varchar(500) DECLARE @date nvarchar(256) -- 构造dd-MM-yyyy-HH:mm:ss格式,替换日期中的斜杠为横杠 SET @date = REPLACE(CONVERT(nvarchar, GETDATE(), 103), '/', '-') + '-' + CONVERT(nvarchar, GETDATE(), 108) SELECT @url = 'https://storageaccountname.blob.core.windows.net/sql-migration-data/db1/' SELECT @date SELECT @db1 = 'db1_diff_' SET @filename = @url + @db1 + @date + '.bak' BACKUP DATABASE [db1] TO URL = @filename WITH DIFFERENTIAL , NOFORMAT, NOINIT, NAME = N'db1-Differential Database Backup', NOSKIP, NOREWIND, NOUNLOAD, STATS = 10 GO
- 样式103:生成
dd/MM/yyyy格式,替换斜杠为横杠后得到dd-MM-yyyy - 样式108:生成
HH:mm:ss格式的时间 - 两者用横杠连接,正好匹配你需要的
01-09-2023-09:00:00格式
方案2:SQL Server 2012及以上版本(使用FORMAT函数)
如果你的SQL Server版本是2012或更高,直接用FORMAT函数可以更简洁地指定格式:
DECLARE @filename varchar(500) DECLARE @db1 varchar(500) DECLARE @url varchar(500) DECLARE @date nvarchar(256) -- 直接指定目标格式 SET @date = FORMAT(GETDATE(), 'dd-MM-yyyy-HH:mm:ss') SELECT @url = 'https://storageaccountname.blob.core.windows.net/sql-migration-data/db1/' SELECT @date SELECT @db1 = 'db1_diff_' SET @filename = @url + @db1 + @date + '.bak' BACKUP DATABASE [db1] TO URL = @filename WITH DIFFERENTIAL , NOFORMAT, NOINIT, NAME = N'db1-Differential Database Backup', NOSKIP, NOREWIND, NOUNLOAD, STATS = 10 GO
FORMAT函数支持自定义日期格式字符串,写法更直观,无需额外拼接和替换操作
内容的提问来源于stack exchange,提问作者Jon
相关产品推荐
相关产品推荐

