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

日期範圍搜尋及設計

答題得分者是:timhuang
stonys
初階會員


發表:64
回覆:111
積分:38
註冊:2002-09-28

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-05-07 18:56:56 IP:61.59.xxx.xxx 未訂閱
各位好 想請教大家一下,如果要查詢一個日期範圍內的資料(例如:由92/01/01~92/05/05),該怎麼作比較好? 又,在設計資料庫程式的時候,該用何種方式來存放日期比較好呢? 小弟現在是以 string的方式來儲存...不知是否洽當呢? 另外~ 小弟由系統取得時間 Y,M,D為DOUBLE型態 再將它轉換成STRING會變成 92/5/5 如果想變成 092/05/05 該怎麼做呢? 一次問了那麼多問題,還望高手多多幫忙~謝謝!
timhuang
尊榮會員


發表:78
回覆:1815
積分:1608
註冊:2002-07-15

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-05-07 22:54:41 IP:61.221.xxx.xxx 未訂閱
select * from tableA where FDate between '2003/01/01' and '2003/05/05' or select * from tableA where FDate >= '2003/01/01' and FDate <= '2003/05/05' 存在資料庫中的日期存法, 最好的當然是用 DateTime 的方式來存, 但是要看資料庫是否有支援, 可以先說明一下你使用的資料庫為何嗎? 要將時間轉為 092/05/05 可以使用 formatdatetime('ee/mm/dd',now) 但是只會取到 92/05/07, 若要多補一個0 的話可以用RightStr('0' FormatDateTime('ee/mm/dd',now),9), 但是 ee 的語法只有兩位, 是不能超過兩位的, 若是民國年破百的話不好處理, 建議使用西元年, 這樣可以使用 FormatDateTime('yyyy/mm/dd',now) 即可.
stonys
初階會員


發表:64
回覆:111
積分:38
註冊:2002-09-28

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-05-07 23:34:56 IP:211.74.xxx.xxx 未訂閱
恩,了解...謝謝... 那再請教... 日期顯示方式不是每台電腦都不同嗎? 像我用DATETIMEPINCK(不知道有沒有拼錯^^") 在公司的電腦,跟在家中的電腦... 顯示出的方式就不同...一個是西元年,一個是民國年... 那在程式設計上有辦法克服嗎? 即,強制以西元年方式顯示.... 感謝前輩的回答
timhuang
尊榮會員


發表:78
回覆:1815
積分:1608
註冊:2002-07-15

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-05-08 00:35:11 IP:61.221.xxx.xxx 未訂閱
這是每台電腦設定 locale 的問題. 你可以在控制台的地區選項中看一下日期的設定, 月曆類型就明白了. 但是使用 FormatDateTime('yyyy/mm/dd', Now) 傳回的一定是西元年. DateTimePicker 是依據 locale 的設定來顯示的哦~    --------------------------------- 西曆及中曆的設定 windows locale info 在繁體中文,依照個人電腦使用的不同,可以顯示民國或西元,當需要利用程式來控制時,就需要透過WIN API來設定,程式如下:    
procedure TForm1.Button1Click(Sender: TObject);
var 
  DefaultLCID: LCID;
  CS:string;
begin
  DefaultLCID := GetThreadLocale;
  //修改為西曆
  SetLocaleInfo(DefaultLCID, LOCALE_ICALENDARTYPE, '1');
  cs:='intl';
  SendMessage(HWND_BROADCAST, WM_WININICHANGE, 0, Integer(CS));
end;    procedure TForm1.Button2Click(Sender: TObject);
var 
  DefaultLCID: LCID;
  CS:string;
begin
  DefaultLCID := GetThreadLocale;
  //修改為民國曆, 英文版系統無效!! (always 是西曆)
  SetLocaleInfo(DefaultLCID, LOCALE_ICALENDARTYPE, '4');
  cs:='intl';
  SendMessage(HWND_BROADCAST, WM_WININICHANGE, 0, Integer(CS));
end;
----------------------------------------------- 也請參考這篇: http://delphi.ktop.com.tw/topic.php?topic_id=239
stonys
初階會員


發表:64
回覆:111
積分:38
註冊:2002-09-28

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-05-08 07:18:35 IP:61.59.xxx.xxx 未訂閱
謝謝您,等下就去試試看您的方法!
系統時間:2024-06-29 9:22:21
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!