将日期添加到SQL数据库备份文件名

时间:2010-03-09 16:35:13

标签: sql sql-server

我正在使用以下内容从SQL作业备份数据库。有人能告诉我如何将当前日期添加到输出文件名吗?最好是YYYYMMDD格式。

BACKUP DATABASE [myDB] TO  DISK = N'\\myPath\myDB.bak' WITH NOFORMAT, INIT,  NAME = N'myDB', SKIP, REWIND, NOUNLOAD,  STATS = 10
GO

谢谢!

7 个答案:

答案 0 :(得分:44)

DECLARE @MyFileName varchar(1000)

SELECT @MyFileName = (SELECT '\\ServerToSave\Path\MyDB_' + convert(varchar(500),GetDate(),112) + '.bak') 

BACKUP DATABASE [myDB] TO DISK=@MyFileName ...

答案 1 :(得分:18)

如果您想要包含日期和时间,那么您可以使用:

DECLARE @MyFileName varchar(200)
SELECT @MyFileName='\\ServerToSave\Path\MyDB_' + REPLACE(convert(nvarchar(20),GetDate(),120),':','-') + '.bak'
BACKUP DATABASE [myDB] TO DISK=@MyFileName ...

Convert中的120给你yyyy-mm-dd hh:mi:ss(24h)

REPLACE函数是必需的,因为文件名不能包含:字符。

答案 2 :(得分:8)

试试这个。

DECLARE @MyFileName varchar(50)
SELECT '\\ServerToSave\Path\MyDB_' + convert(nvarchar(20),GetDate(),112) + '.bak'
BACKUP DATABASE [myDB] TO DISK=@MyFileName ...

转换中的112为您提供YYYYMMDD格式

答案 3 :(得分:2)

使用以下

DECLARE @BackupFileName varchar(20)

SELECT @BackupFileName = '\\ServerName\SharedFolder\DatabaseName_' + CONVERT (VarChar, GetDate(), 112) + '.bak'

BACKUP DATABASE [myDB] TO  DISK = @BackupFileName WITH NOFORMAT, INIT,  NAME = N'myDB', SKIP, REWIND, NOUNLOAD,  STATS = 10

在此处阅读Cast和Convert http://msdn.microsoft.com/en-us/library/ms187928.aspx

答案 4 :(得分:1)

也许您想要使用Windows任务,只需将代码放入bat文件中并添加到Windows任务中:

for /f "tokens=2 delims==" %%a in ('wmic OS Get localdatetime /value') do set "dt=%%a"
set "YY=%dt:~2,2%" & set "YYYY=%dt:~0,4%" & set "MM=%dt:~4,2%" & set "DD=%dt:~6,2%"
set "HH=%dt:~8,2%" & set "Min=%dt:~10,2%" & set "Sec=%dt:~12,2%"

set "fullstamp=%YYYY%%MM%%DD%-%HH%%Min%%Sec%"
set bkfile=dbname%fullstamp%.bak
set path_sqlcmd="C:\Program Files\Microsoft SQL Server\Client SDK\ODBC\110\Tools\Binn\SQLCMD.exe"

%path_sqlcmd% -S .\SQLEXPRESS -E -Q "BACKUP DATABASE seteo TO DISK='D:\bk-sqlserver\%bkfile%' WITH FORMAT"

它有点长,但我认为这是一个实用的解决方案,如果您需要备份sql server 2005或oldie版本,只需通过 osql 更改 sqlcmd 强>

答案 5 :(得分:0)

DECLARE @var nvarchar(max) ='C:\Projects\myDatabase ' +replace(rtrim(convert(char,getdate())), ':',',')+'.bak';
BACKUP DATABASE myDatabase TO DISK = @var

输出:

  

C:\ Projects \ myDatabase 2015年6月3日6,33AM.bak

答案 6 :(得分:0)

您可以使用其中任何一个。 这些是备份数据库中使用日期和日期时间的示例:

<!DOCTYPE html>
<html>

<head>
<meta charset="UTF-8">
    <title>Check your age</title>
</head>

<style>


</style>

<script>

 function check(){
  let data = "dd/mm/yyyy";
  let x = data.split("/");

 if(x.value == "" || x.value == null || isNaN(data) || dd < 1 || dd > 31 || mm < 1 || mm > 12 || yyyy < 1900 || yyyy > 2019){

 alert("Give a proper birth day!");
 return false;

 }
 return true;
 }


</script>

<body>

    <form name="myForm" action="/action_page.php" onsubmit="return validateForm()" method="post">
        <Date of birth : <input type="text" value="" id="dateofbirth" name="time" onclick="check()"/>


    </form>
      <button onclick="check();">Check the age</button>


</body>

</html>