iT邦幫忙

4

刪除刪除

刪除

問個問題,2019年3月29日扣一個月,你的答案是
1、2月29日 (非閏一定出錯)
2、2月27日 (減30天)
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中
4
glj8989332
iT邦研究生 4 級 ‧ 2020-08-20 09:10:29
最佳解答

有一些步驟

  1. 先用cast把YYMMMM字串 + '01' 轉成 日期
  2. 用DateAdd作-1個月的運算
  3. 用Convert把日期轉成 YYYYMMDD的格式
  4. 用LEFT只取YYYYMMDD前6字元, 也就是YYYYMM
Select LEFT(CONVERT(varchar, DateAdd(MM,-1,cast(MA011+'01' as date)), 112), 6) from CMSMA

這是我需要的,感謝大大解決問題

2
尼克
iT邦大師 1 級 ‧ 2020-08-20 09:01:09
select dateadd(month,1,'2020-08-20')

感謝回答~是卡在轉換的問題,目前依glj8989332的方式

2
oxox
iT邦研究生 3 級 ‧ 2020-08-20 12:56:54

可能SQL2000版本問題,出現「型別 date 不是已定義的系統型別。」
我要這樣下才可以&也分享一下。

select  MA011 庫存現行年月, MA011+'01'  as 庫存現行年月多日
,convert(datetime, MA011+'01', 112)  轉成日期格式
,convert (char(10), dateadd(month,-1,convert(datetime, MA011+'01', 112)), 112) as 上月年月日
,left(convert (char(10), dateadd(month,-1,convert(datetime, MA011+'01', 112)), 112) ,6)as 上月年月
from CMSMA

結果:202008、20200801、2020-08-01 00:00:00.000、20200701、202007

我要發表回答

立即登入回答