我要写一个批处理:从sql server数据库bcp出月报表的数据
bcp出来的文件形如YYYY-MM_filename.txt的格式,就是年份+月份+文件名.txt
用%date%函数,只能获取到当前月份的:
bcp master.dbo.fm_report_month out "e:\fm_report\%date:~0,4%-%date:~5,2%_hwbbxm.txt" -c -t "_+|" -r "\n" -U"sa" -P"pwd" -S"sdfad-1mv453x"
这样bcp出来的文件名是:2013-01_hwbbxm.txt
但是我想要的文件名是 :2012-12_hwbbxm.txt
也就是显示的是当前时间的上个月份
请问这个怎么解决?
我用批处理.bat文件执行的...
批处理 获取date的上个月份的yyyy-mm
答案:2 悬赏:50 手机版
解决时间 2021-02-28 10:40
- 提问者网友:骨子里的高雅
- 2021-02-27 19:25
最佳答案
- 五星知识达人网友:三千妖杀
- 2021-02-27 19:53
是不是bcd输出的就是当前月的前一个月的数据,所以日期要是比这个月早一个月?如过是的话,在bcp之前加入下面这些批处理就好了,当然 bcd 输出的那一行好改相应的变量哦,注意看了~
set /a "y=%date:~0,4%"
if "%date:~5,1%"=="0" (set /a "m=%date:~6,1%") else (set /a "m=%date:~5,2%")
if %m%==1 ( set /a "m=12" & set /a "y=%y%-1") else (set /a "m=%m%-1")
bcp master.dbo.fm_report_month out "e:\fm_report\%y%-%m%_hwbbxm.txt" -c -t "_+|" -r "\n" -U"sa" -P"pwd" -S"sdfad-1mv453x"
set /a "y=%date:~0,4%"
if "%date:~5,1%"=="0" (set /a "m=%date:~6,1%") else (set /a "m=%date:~5,2%")
if %m%==1 ( set /a "m=12" & set /a "y=%y%-1") else (set /a "m=%m%-1")
bcp master.dbo.fm_report_month out "e:\fm_report\%y%-%m%_hwbbxm.txt" -c -t "_+|" -r "\n" -U"sa" -P"pwd" -S"sdfad-1mv453x"
全部回答
- 1楼网友:廢物販賣機
- 2021-02-27 21:10
同问。。。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯