求教bcp查询语句中包含日期变量执行错误解决方法。

netfm126 2018-01-04 05:00:46
公司相关部门现需查询前一天新注册会员当天消费记录;数据库用到的表有两个:1.会员表,主要字段有:Member,包含会员编号([mCode],主键),注册日期字段([StartDate],日期型)等;2.会员消费表,主要字段有:MemberHotelAct,包含账单编号([ID],主键), 会员编号([mCode]),门店编号([HotelID]),账单金额([BillCount]),账单日期([SyncTag],日期型)等,在SQLServer 查询分析器执行下列语句可以正确查询出结果,

DECLARE @NowDate DATE;
DECLARE @StartDate DATETIME;
DECLARE @EndDate DATETIME ;

SET @NowDate = GETDATE();-
SELECT @StartDate = DATEADD(DAY,-1,@NowDate);
SET @EndDate=DATEADD(second,-1,CONVERT(DATETIME,@NowDate ));
SELECT [MemberHotelAct].[mCode]
,[MemberHotelAct].[HotelID]
,[MemberHotelAct].[BillCount]
,[MemberHotelAct].[SyncTag]
FROM [yumcloud].[dbo].[MemberHotelAct],[yumcloud].[dbo].[Member]
where [MemberHotelAct].mCode = [Member].mCode
and Member.StartDate between @StartDate and @EndDate
and [MemberHotelAct].SyncTag between @StartDate and @EndDate
order by [MemberHotelAct].HotelID

现想将上述语句用bcp工具导出到excel表格中,在执行过程中出现bcp报错,

(1 行受影响)
消息 241,级别 16,状态 1,第 13 行
从字符串转换日期和/或时间时,转换失败。
请教在bcp中如何对查询语句中日期变量进行转化处理,感谢。
...全文
541 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
netfm126 2018-02-06
  • 打赏
  • 举报
回复
引用 10 楼 u011570818 的回复:
[quote=引用 7 楼 roy_88 的回复:] 简单处理一下,把你的语句封装为存储过程 ,BCP直接调用存储过程
嗯,好的,谢谢。[/quote] 之前试过了,仍然报错,将您这个语句写到存储过程中封装执行时也是报错。现在只能将上面的语句查询结果保存到临时表中,再用bcp语句调用这个临时表,就顺利执行。
zjcxc 元老 2018-01-26
  • 打赏
  • 举报
回复
and Member.StartDate between between '+@StartDate+' and '+@EndDate+' and [MemberHotelAct].SyncTagbetween '+@StartDate+' and '+@EndDate+' ---------------------------- 这个明显少了单引号吧 and Member.StartDate between between ‘’'+@StartDate+'‘’ and ‘’'+@EndDate+'‘’ and [MemberHotelAct].SyncTagbetween '‘’+@StartDate+'‘’ and ‘’'+@EndDate+'‘’
netfm126 2018-01-26
  • 打赏
  • 举报
回复
引用 7 楼 roy_88 的回复:
简单处理一下,把你的语句封装为存储过程 ,BCP直接调用存储过程
嗯,好的,谢谢。
netfm126 2018-01-26
  • 打赏
  • 举报
回复
引用 6 楼 z10843087 的回复:
[quote=引用 5 楼 u011570818 的回复:] 求各位解答。
你把语句的执行的结果发来看看,都是什么类型的[/quote] 执行的时候下列报错:从字符串转换日期和/或时间时,转换失败。
OwenZeng_DBA 2018-01-26
  • 打赏
  • 举报
回复
就是执行查询,不是 bcp
中国风 2018-01-26
  • 打赏
  • 举报
回复
简单处理一下,把你的语句封装为存储过程 ,BCP直接调用存储过程
OwenZeng_DBA 2018-01-26
  • 打赏
  • 举报
回复
引用 5 楼 u011570818 的回复:
求各位解答。
你把语句的执行的结果发来看看,都是什么类型的
netfm126 2018-01-26
  • 打赏
  • 举报
回复
求各位解答。
netfm126 2018-01-16
  • 打赏
  • 举报
回复
引用 1 楼 yenange 的回复:
这里是不是多了个 "-" ? 另外, 用 导入导出向导 导出 EXCEL 比较好, 一般不会有问题。
已去掉“-”符号。
netfm126 2018-01-16
  • 打赏
  • 举报
回复
BCP 语句:
declare @exec_sql  varchar(200);--SQL语句;
set @exec_sql = 'SELECT [MemberHotelAct].[mCode]
      ,[MemberHotelAct].[HotelID]
       ,[MemberHotelAct].[BillCount]
        ,[MemberHotelAct].[SyncTag]
  FROM [yumcloud].[dbo].[MemberHotelAct],[yumcloud].[dbo].[Member]
  where [MemberHotelAct].mCode = [Member].mCode
    and Member.StartDate between between '+@StartDate+' and '+@EndDate+'
  and [MemberHotelAct].SyncTagbetween '+@StartDate+' and '+@EndDate+'
  order by [MemberHotelAct].HotelID';
 select @exec_sql

set @exec_sql = ' bcp "'+@exec_sql+'" queryout "'+@file_path+''+@file_name+'" -c -T -U "sa" -P "sa"';
exec master..xp_cmdshell @exec_sql
zjcxc 元老 2018-01-05
  • 打赏
  • 举报
回复
你的 BCP 语句给出来
吉普赛的歌 版主 2018-01-05
  • 打赏
  • 举报
回复


这里是不是多了个 "-" ?

另外, 用 导入导出向导 导出 EXCEL 比较好, 一般不会有问题。

34,575

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧