線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:2626
推到 Plurk!
推到 Facebook!

又是關於日期的問題

答題得分者是:hagar
miga
初階會員


發表:61
回覆:92
積分:30
註冊:2002-08-27

發送簡訊給我
#1 引用回覆 回覆 發表時間:2002-12-06 18:38:56 IP:211.74.xxx.xxx 未訂閱
我想取得table中日期與現在相差幾天 用 table['date']-now 不行哎… 請問要用什麼方法呢…
payne
初階會員


發表:1
回覆:40
積分:38
註冊:2002-04-19

發送簡訊給我
#2 引用回覆 回覆 發表時間:2002-12-06 19:23:05 IP:61.223.xxx.xxx 未訂閱
如果資料庫是用SQL Server就用DATEDIFF Function,範例如下 USE pubs GO SELECT DATEDIFF(day, pubdate, getdate()) AS no_of_days FROM titles GO
ccchen
版主


發表:61
回覆:940
積分:1394
註冊:2002-04-15

發送簡訊給我
#3 引用回覆 回覆 發表時間:2002-12-06 20:00:24 IP:203.217.xxx.xxx 未訂閱
引言: 我想取得table中日期與現在相差幾天 用 table['date']-now 不行哎… 請問要用什麼方法呢…
Table.fieldbyname('date').asdateTime-now;
hagar
版主


發表:143
回覆:4056
積分:4445
註冊:2002-04-14

發送簡訊給我
#4 引用回覆 回覆 發表時間:2002-12-07 05:23:40 IP:202.39.xxx.xxx 未訂閱
Table 欄位名稱用 Date 這個保留字可能會有問題哦!    -- Everything I say is a lie.
c905165
中階會員


發表:50
回覆:120
積分:54
註冊:2002-09-29

發送簡訊給我
#5 引用回覆 回覆 發表時間:2002-12-07 08:47:38 IP:203.204.xxx.xxx 未訂閱
因為問的人沒有講明白,是利用什麼資料庫的指令。 如果是用 mysql 的話,假設 birthday 是 customer 表格內的欄位名稱 select current_date - birthday from customer 就可以了。 這樣可以顯示這個人已經出生幾天了。
------
有困難就是能力不足,有麻煩就是方法不對... 劣者總是遇到困難,也時常出現麻煩
miga
初階會員


發表:61
回覆:92
積分:30
註冊:2002-08-27

發送簡訊給我
#6 引用回覆 回覆 發表時間:2002-12-10 01:39:51 IP:211.74.xxx.xxx 未訂閱
引言: 如果資料庫是用SQL Server就用DATEDIFF Function,範例如下 USE pubs GO SELECT DATEDIFF(day, pubdate, getdate()) AS no_of_days FROM titles GO
嗯…謝謝 可是我並沒有用到sql語法哎…
miga
初階會員


發表:61
回覆:92
積分:30
註冊:2002-08-27

發送簡訊給我
#7 引用回覆 回覆 發表時間:2002-12-10 01:40:49 IP:211.74.xxx.xxx 未訂閱
Table.fieldbyname('date').asdateTime-now;      [/quote]    不好意思… 還是不行說… 跟我之前所產生的結果一樣…
FrederickPau
資深會員


發表:4
回覆:161
積分:268
註冊:2002-11-04

發送簡訊給我
#8 引用回覆 回覆 發表時間:2002-12-10 03:03:16 IP:61.228.xxx.xxx 未訂閱
Round(Table.FieldByName('date').AsDateTime - now); 或 Trunc(Table.FieldByName('date').AsDateTime - now);
ccchen
版主


發表:61
回覆:940
積分:1394
註冊:2002-04-15

發送簡訊給我
#9 引用回覆 回覆 發表時間:2002-12-10 08:36:20 IP:61.219.xxx.xxx 未訂閱
Table.fieldbyname('date').asdateTime-now; DateTime其實就是double,小數前之部分代表日期, 小數以下部分代表時間 故可以直接拿來計算 Table.fieldbyname('date').asdateTime-now; 計算完後仍為一DateTime (Double), 用Trunc去掉小數部分就是天數了
miga
初階會員


發表:61
回覆:92
積分:30
註冊:2002-08-27

發送簡訊給我
#10 引用回覆 回覆 發表時間:2002-12-10 10:30:42 IP:211.74.xxx.xxx 未訂閱
引言: Round(Table.FieldByName('date').AsDateTime - now); 或 Trunc(Table.FieldByName('date').AsDateTime - now);
這兩個我都試過了… 可是還是不行, 我在資料庫中是datetime的型態,有年月日、時分秒 而我是要show出訊息告訴管理員 所以我用的語法如下 showmessage(' 距結束尚有 ' DateToStr(Round(initial.FieldByName('init_end').AsDateTime - now)) ' 天') 現在產生的結果為:1899/12/31 到底該怎麼辦呢
hagar
版主


發表:143
回覆:4056
積分:4445
註冊:2002-04-14

發送簡訊給我
#11 引用回覆 回覆 發表時間:2002-12-10 10:40:04 IP:202.39.xxx.xxx 未訂閱
注意紅色部份:
begin
  showmessage('   距結束尚有 '   IntToStr(Round(initial.FieldByName('init_end').AsDateTime - now)) ' 天')
-- Everything I say is a lie.
william
版主


發表:66
回覆:2535
積分:3048
註冊:2002-07-11

發送簡訊給我
#12 引用回覆 回覆 發表時間:2002-12-10 10:41:05 IP:147.8.xxx.xxx 未訂閱
引言:showmessage(' 距結束尚有 ' IntToStr(Round(initial.FieldByName('init_end').AsDateTime - now)) ' 天')
miga
初階會員


發表:61
回覆:92
積分:30
註冊:2002-08-27

發送簡訊給我
#13 引用回覆 回覆 發表時間:2002-12-10 11:10:54 IP:211.74.xxx.xxx 未訂閱
引言: 注意紅色部份:
begin
  showmessage('   距結束尚有 '   IntToStr(Round(initial.FieldByName('init_end').AsDateTime - now)) ' 天')
-- Everything I say is a lie.
哇…原來是那個地方… 解決了…謝謝囉…
Perlman
一般會員


發表:0
回覆:5
積分:1
註冊:2002-03-14

發送簡訊給我
#14 引用回覆 回覆 發表時間:2002-12-10 18:38:46 IP:202.145.xxx.xxx 未訂閱
試試看: showmessage(' 距結束尚有 ' inttostr(DaysBetween(initial.FieldByName, now)) ' 天') 記得Use DateUtils 不會寫 Perl 的 Perlman
------
不會寫 Perl 的 Perlman
系統時間:2024-11-24 21:21:57
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!