iT邦幫忙

0

SQL刪除日期資料問題

各位大大好:

我每日有檔案要上傳至資料庫中,每日上傳時,
會先檢查資料庫欄位(FILEDATE)是否小於當日上傳日期,
是的話會刪除舊資料,insert當日資料
但會保留當月最後一筆資料(即月底資料)
請問delete資料時,where的語法該如何判斷?

delete from AAA
where FILEDATE < Getdate()
可以刪除小於當日資料,但後面判斷是否為該月最後一筆資料,不知如何描述?
謝謝

KUI iT邦新手 4 級 ‧ 2018-05-16 16:34:03 檢舉
我想問喔,那為何不這樣想。

每一條訊息代表一個月,
那個月如果有上傳,就Update
沒有就Insert

就不需要Delete了
KUI iT邦新手 4 級 ‧ 2018-05-16 16:36:17 檢舉
找月份的話可以用 MONTH()
SELECT COUNT(1) FROM [TABEL_NAME] WHERE MONTH([時間欄位名稱])='月份';
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

0
純真的人
iT邦大師 1 級 ‧ 2018-05-16 15:48:07
最佳解答

恩...純玩玩~你看看是不是你要的

不過這是只有保留一筆資料~不知道你是不是每月都保留最後一筆@@...

declare @AAA table(FILEDATE datetime)
insert into @AAA
values('2018/5/1 12:15:50'),('2018/5/2 14:18:30'),('2018/5/3 15:10:12')

delete from @AAA
where FILEDATE not in(
	select max(FILEDATE) 
	from @AAA
	where FILEDATE < Getdate()
)

select *
from @AAA

以下是每月保留一筆

declare @AAA table(FILEDATE datetime)
insert into @AAA
values('2018/5/1 12:15:50'),('2018/5/2 14:18:30'),('2018/5/3 15:10:12')
,('2018/4/2 12:15:50'),('2018/4/7 14:18:30'),('2018/4/5 15:10:12')

delete from @AAA
where FILEDATE not in(
	select max(FILEDATE) 
	from @AAA
	where FILEDATE < Getdate()
	group by Year(FILEDATE),Month(FILEDATE)
)

select *
from @AAA

https://ithelp.ithome.com.tw/upload/images/20180516/20061369KZzd5ETOlF.png

gaga0826 iT邦新手 5 級 ‧ 2018-05-16 16:25:15 檢舉

對,我要保留每月的最後一筆資料,謝謝

恩~你再看看~

gaga0826 iT邦新手 5 級 ‧ 2018-05-16 17:43:22 檢舉

可以了,感謝你

我要發表回答

立即登入回答