全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1255
推到 Plurk!
推到 Facebook!

在資料庫中如何得知不存在的日期

答題得分者是:李國維
lkw
一般會員


發表:10
回覆:6
積分:3
註冊:2006-07-12

發送簡訊給我
#1 引用回覆 回覆 發表時間:2010-03-26 12:01:31 IP:61.67.xxx.xxx 訂閱
請問一下各位大大:
我有一個資料表,其中一個欄位名稱是DateStamp,型別設定為DATE。
這個資料表每天都會寫入一筆資料,當然也包含日期。

有沒有甚麼辦法可以判斷在這個資料表中從2010/1/1到2010/3/25中,缺少了哪幾天的日期?


李國維
高階會員


發表:42
回覆:287
積分:235
註冊:2003-02-07

發送簡訊給我
#2 引用回覆 回覆 發表時間:2010-03-26 15:38:41 IP:61.67.xxx.xxx 訂閱

[code cpp]
ADOQuery1->Close();
ADOQuery1->SQL->Clear();
ADOQuery1->SQL->Add("SELECT DISTINCT DateStamp FROM TableName Where DateStamp BETWEEN '2010/1/1' and '2010/3/25 ORDER BY DateStamp ASC");
ADOQuery1->Open();
for (TDate tmpdate = TDate("2010/1/1") ; tmpdate <= TDate("2010/3/25") ; tmpdate )
{
if (tmpdate != StrToDate(ADOQuery1->FieldByName("DateStamp")->AsString))
{
// 不存在日期
}
else
{
if (!ADOQuery1->Eof)
ADOQuery1->Next();
}

}
[/code]

我想的邏輯大約是這樣做。請參考
===================引 用 lkw 文 章===================
請問一下各位大大:
我有一個資料表,其中一個欄位名稱是DateStamp,型別設定為DATE。
這個資料表每天都會寫入一筆資料,當然也包含日期。

有沒有甚麼辦法可以判斷在這個資料表中從2010/1/1到2010/3/25中,缺少了哪幾天的日期?



pedro
尊榮會員


發表:152
回覆:1177
積分:865
註冊:2002-06-12

發送簡訊給我
#3 引用回覆 回覆 發表時間:2010-03-26 17:11:58 IP:60.248.xxx.xxx 未訂閱
您好

提供用與臨時表比對語法的方式,給您參考,看適不適合您環境?


[code sql]
declare @temp table(dd char(8))
declare @d char(8)
set @d='20100301'

while @d<='20100331'
begin
insert @temp select @d
set @d=convert(char(8),DateAdd(d,1,@d),112)
end

select dd
from @temp
where dd not in (select date1 from tab1 where date1 like '201003%')

[/code]

以上在sql server 2000測OK
lkw
一般會員


發表:10
回覆:6
積分:3
註冊:2006-07-12

發送簡訊給我
#4 引用回覆 回覆 發表時間:2010-03-26 18:05:24 IP:61.67.xxx.xxx 訂閱
多謝兩位幫忙。
系統時間:2017-10-21 11:10:31
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!