从批处理文件中获取用户的输入日期

时间:2016-07-26 21:28:15

标签: sql-server batch-file

我正在尝试通过批处理文件运行SQL查询,当我尝试这样做时,我正在

  

无效参数错误

以下是我尝试运行SQL SCRIPT的批处理文件

:start

cls

@echo ------BILLING REPORT---------

@echo Please enter billing report Date in (YYYY/MM/DD)

@echo off 

::set /P D = Enter Date:  

::Date %Date% > Billing_Data.sql

PAUSE

sqlcmd -S database\instance_name -E -i "C:\Users\rb54761\Deskto\rb54761\Billing_Data_For_Certs_New.sql" > Output.txt -v Date = '2016-07-01'

:: -o "C:\Users\rb54761\Desktop\rb54761\Output.txt"

PAUSE

COPY C:\Users\rb54761\Desktop\rb54761\Output.txt C:\Users\rb54761\Desktop
PAUSE

goto start

为此我需要的东西 1.当用户输入日期时,数据将根据该日期获取 2.我想在where子句中添加该日期,以便相应地获取数据 下面是我要输入数据的where子句

WHERE
DateCompleted > CONVERT(DATETIME, '$(Date)', 102))

1 个答案:

答案 0 :(得分:0)

在命令行中使用-v Date = '2016-07-01',单引号被视为sqlcmd变量的一部分。在您的脚本中,您使用的'$(Date)'变为''2016-07-01'',错误应该非常明显。

从命令行或脚本中删除一组引号,所有引号都应该有效。

如果要在命令行中引用该值以防止出现毒字符或包含批处理标记分​​隔符(如空格或逗号),则必须使用双引号:类似于 -v var = "Some value with spaces"。在这种情况下,双引号包含在值中。