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

請問 日期+時間 的顯示方式(小弟已爬文 >.<)

答題得分者是:P.D.
impressive9
一般會員


發表:1
回覆:4
積分:1
註冊:2007-12-10

發送簡訊給我
#1 引用回覆 回覆 發表時間:2007-12-11 00:16:58 IP:123.252.xxx.xxx 訂閱
D7 + MSSQL 2000

之前 總是喜歡把日期跟時間分開 兩個欄位紀錄 (varchar 6 varchar 4) 6碼民國日期加上4碼 HHmm,

!99/99/00;0;_
!99:00;0;_

以前這樣設定皆可達到小弟想要呈現給user看的格式, 非常滿意... 但是... 問題發生了!
有一個 varchar 10 欄位 記錄著 9612011630 , 請問各位超級大大,
該怎麼讓他可以顯示成 96/12/01 16:30 呢??(中間有一空格)

小弟試了好久 也爬了站上所有相關的文章(真的>.<), 但是似乎沒看到有人有一樣的問題!

請問位大大 施捨一下錦囊妙計! 在下感激不盡!

------
請多多指教! 謝謝.
syntax
尊榮會員


發表:26
回覆:1139
積分:1258
註冊:2002-04-23

發送簡訊給我
#2 引用回覆 回覆 發表時間:2007-12-11 00:23:44 IP:61.64.xxx.xxx 訂閱
直接在  mask 上使用固定的一個「空格」如何?

===================引 用 impressive9 文 章===================
D7 MSSQL 2000

之前 總是喜歡把日期跟時間分開 兩個欄位紀錄 (varchar 6 varchar 4) 6碼民國日期加上4碼 HHmm,

!99/99/00;0;_
!99:00;0;_

以前這樣設定皆可達到小弟想要呈現給user看的格式, 非常滿意... 但是... 問題發生了!
有一個 varchar 10 欄位 記錄著 9612011630 , 請問各位超級大大,
該怎麼讓他可以顯示成 96/12/01 16:30 呢??(中間有一空格)

小弟試了好久 也爬了站上所有相關的文章(真的>.<), 但是似乎沒看到有人有一樣的問題!

請問位大大 施捨一下錦囊妙計! 在下感激不盡!
impressive9
一般會員


發表:1
回覆:4
積分:1
註冊:2007-12-10

發送簡訊給我
#3 引用回覆 回覆 發表時間:2007-12-11 00:34:47 IP:123.252.xxx.xxx 訂閱

感謝大大的回覆, 不過目前小弟的做法是秀在DBGrid上... 在ADOQuery1.Field.EditMask中設定

先不要說空格, 那 9612011630 目前小弟還無法讓它變成 96/12/0116:30 ... 快瘋了 = =a

請大大幫幫忙, 謝謝! 感激不盡!

------
請多多指教! 謝謝.
mypigbaby
高階會員


發表:11
回覆:168
積分:155
註冊:2006-07-20

發送簡訊給我
#4 引用回覆 回覆 發表時間:2007-12-11 08:12:44 IP:203.73.xxx.xxx 訂閱
如果只是單純的顯示
您有考慮用虛擬欄位來顯示嗎?
在ADOQUERY上面按右鍵->FIELDS editor
在裡面按ctrl-n
NAME--->test_display
field type 選Calculated
type ->string
size -> ↓
96/12/0116:30 <--看這串多長..

然後在

[code delphi]

procedure TForm1.ADOQUERY1CalcFields(DataSet: TDataSet);
begin
ADOQUERY1.FieldByName('TEST_DISPLAY').Value:= 看您要什麼塞資料進去
end;

[/code]

===================引 用 impressive9 文 章===================

感謝大大的回覆, 不過目前小弟的做法是秀在DBGrid上... 在ADOQuery1.Field.EditMask中設定

先不要說空格, 那 9612011630 目前小弟還無法讓它變成 96/12/0116:30 ... 快瘋了 = =a

請大大幫幫忙, 謝謝! 感激不盡!
pedro
尊榮會員


發表:152
回覆:1187
積分:892
註冊:2002-06-12

發送簡訊給我
#5 引用回覆 回覆 發表時間:2007-12-11 08:58:14 IP:210.61.xxx.xxx 未訂閱
提供另一個方法,用sql語法把資料型態轉型

select convert(datetime,'20071211 16' ':' '30' ':' '21',120)
impressive9
一般會員


發表:1
回覆:4
積分:1
註冊:2007-12-10

發送簡訊給我
#6 引用回覆 回覆 發表時間:2007-12-11 09:08:08 IP:211.22.xxx.xxx 訂閱

感謝樓上大大的解答, 用Calculated Field去做是小弟沒想到的, 謝謝!
用SQL轉換函數去做 等等小弟馬上試試, 謝謝!

只是小弟心中有一困惑 當把日期時間分成兩個欄位時 套用 EditMask !99/99/00;0;_ & !99:00;0;_
可以很方便很快速的在DBGrid中顯示出 96/12/01 與 16:30 這樣的格式, 那為什麼當把兩個欄位併為一個時,
卻無法再用相同模式去做??

Thanks all!
------
請多多指教! 謝謝.
P.D.
版主


發表:603
回覆:4038
積分:3874
註冊:2006-10-31

發送簡訊給我
#7 引用回覆 回覆 發表時間:2007-12-12 02:54:41 IP:61.67.xxx.xxx 未訂閱
我有一事不明, 不是這樣設定就好了嗎?

!99/99/00^99:00;0 (^代表空白)
impressive9
一般會員


發表:1
回覆:4
積分:1
註冊:2007-12-10

發送簡訊給我
#8 引用回覆 回覆 發表時間:2007-12-12 19:53:08 IP:123.252.xxx.xxx 訂閱

感謝版主大大! 這的確是最完美的一個方法~ 沒想到答案如此出乎小弟意料之外...
那天小弟不管如何拼湊都不成功 = =a

給分了! 謝謝!!

順便請問版大 這 ;0 代表什麼意思呢? 或哪邊有相關Help可以去看? 小弟找過Delphi Help都沒看到。


------
請多多指教! 謝謝.
P.D.
版主


發表:603
回覆:4038
積分:3874
註冊:2006-10-31

發送簡訊給我
#9 引用回覆 回覆 發表時間:2007-12-12 23:52:20 IP:61.67.xxx.xxx 未訂閱
0代表非格式的字元不納入結果, 1表示要
舉例

MASK=> 99/99/99;0 SOURCE DATA=123456 SCREEN VIEW=12/34/56 RESULT STRING=123456
MASK=> 99/99/99;1 SOURCE DATA=123456 SCREEN VIEW=12/34/56 RESULT STRING=12/34/56

impressive9
一般會員


發表:1
回覆:4
積分:1
註冊:2007-12-10

發送簡訊給我
#10 引用回覆 回覆 發表時間:2007-12-13 00:05:14 IP:123.252.xxx.xxx 訂閱

謝謝版大如此詳細的解說! 感恩!
------
請多多指教! 謝謝.
系統時間:2024-04-29 6:14:21
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!