You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何调整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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 18:42:40