这是我的疑问:
SELECT fixed_asset_id,fixed_asset_name,fixed_asset_category,fixed_asset_status FROM afro_fixed_asset WHERE fixed_asset_status = 'Operational (In use)' AND fixed_asset_category= 'Computer & Computer Accessory'AND fixed_asset_name= 'Bur Cutter' AND fixed_asset_acquisition_date BETWEEN '03/26/2017' AND '03/27/2017'' AND fixed_asset_registered_date BETWEEN '04/12/2017'' AND '04/03/2017'
Status 7 - ERROR: syntax error at or near "04" LINE 1: ...7/2017'' AND fixed_asset_registered_date BETWEEN '04/12/2017... ^
执行时,显示此错误:
Msg 102,Level 15,State 1,Line 8
附近的语法不正确
“' 2016'
答案 0 :(得分:1)
你需要逃避报价。
DECLARE @cmd VARCHAR(255)
SET @cmd = 'bcp "select Cash.TransC_dtmDateTime, case
when CONVERT(varchar(10),Cash.TransC_dtmDateTime,108) <''06.00''
then (convert(varchar(10),Cash.TransC_dtmDateTime -1,103))
else
(convert(varchar(10),Cash.TransC_dtmDateTime,103))
end as TransDate, tblTrans_Ticket.TransT_intNoOfSeats as NoOfSeats
into #seats FROM tblTrans_Cash Cash , tblTrans_Ticket , tblPaymentType
WHERE Cash.TransC_strType = tblPaymentType.PayType_strType and
tblTrans_Ticket.TransT_lgnNumber= Cash.TransC_lgnNumber and
Cash.TransC_dtmDateTime between ''2016-07-01 06:00:00.000'' and
''2016-08-01 06:00:00.000'' and
tblTrans_Ticket.TransT_intNoOfSeats >0
and Cash.Workstation_strCode=''K_DEDEDEDE''
and tblPaymentType.PayType_strDescription in
(''JUSPAY'',''CITRUS'',''FUELWALLETONLINE'',''CREDIT CARD'')
AND ISNULL(Cash.TransC_strBKCardNo,'') not like ''990022%''
order by Cash.TransC_dtmDateTime
select (convert(varchar(10),TransDate,103)), sum(NoOfSeats)as seats
from #seats group by convert(varchar(10),TransDate,103) order by TransDate
drop table #seats" queryout "c:/tests.csv" -U sa -P test -S
192.168.57.5,1441 -T -c -t,'
Exec xp_cmdshell @cmd
答案 1 :(得分:1)
使用动态查询生成时,您必须使用双引号更新语句并执行它。
更改您的查询语句,如下所示:
Cash.TransC_dtmDateTime,108) <'06.00'
要强>
Cash.TransC_dtmDateTime,108) <''06.00''
还有更多地方,其他像
between '2016-07-01 06:00:00.000' and '2016-08-01 06:00:00.000'
要强>
between ''2016-07-01 06:00:00.000'' and ''2016-08-01 06:00:00.000''