對不起,我對DbGrids很新。如何在數據庫網格中顯示TIMEDIFF(現在,然後)?
我應該使用查詢的字段編輯器,並以某種方式添加捕獲TIMEDIFF的新字段,然後將其作爲列添加到我的DbGrid中?
或者我可以/應該跳過現場編輯器並以某種方式將TIMEDIFFF聲明爲列嗎?
對於這個表格,我想要一個有4列的DbGrid:開始時間,結束時間,持續時間,描述(run_id是主鍵&將不會顯示)。
我難倒就如何將數據放入一個 '持續時間' 列...
mysql> describe test_runs;
+------------------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------------+-------------+------+-----+---------+----------------+
| run_id | int(11) | NO | PRI | NULL | auto_increment |
| start_time_stamp | timestamp | YES | | NULL | |
| end_time_stamp | timestamp | YES | | NULL | |
| description | varchar(64) | YES | | NULL | |
+------------------+-------------+------+-----+---------+----------------+
4 rows in set (0.37 sec)
[更新] 爲數據源的查詢
SELECT start_time_stamp,
end_time_stamp,
TIMEDIFF(end_time_stamp, start_time_stamp) as duration,
description
FROM test_runs ORDER BY start_time_stamp DESC
和當我在MySql中手動執行它時,我得到
mysql> select TIMEDIFF(end_time_stamp, start_time_stamp) as duration FROM
+----------+
| duration |
+----------+
| NULL |
| 00:04:43 |
| 00:00:13 |
| 00:00:06 |
| 00:00:04 |
+----------+
5 rows in set (0.00 sec)
但DB窗格中的相應列保持空白。誰能幫忙?謝謝。
[更新]我使用AnyDac,如果有幫助。當我使用AnYDac查詢編輯器並執行它時,該查詢會在MySql中以及Delphi IDE中生成所有字段,包括時差。
唯一的問題是,我沒有在運行時在數據庫網格中看到它。我在設計時雙擊數據庫網格,列是正確的。 FielName
屬性設置爲duration
,該值由上面顯示的查詢重新調整。它不存在於數據庫中,但是由查詢計算;可以以某種方式成爲問題?
[Aaaaaaaargh !!!]有人試圖「改善」我的代碼,並在運行時編程設置查詢的文本(如SELECT * FROM test_runs)
,從而覆蓋了我的設計時間查詢!由於DATABSE表沒有一個duration
現場,沒有表現出在數據庫網格中。
話了,聲音被rasied現在我必須apolgize浪費你的時間。對不起。
我使用XE3和UniDAC測試了您的查詢,並按預期運行。所有列和行都按預期顯示。請添加您正在使用的Delphi版本和db-access-components。 –
我想要投票這個問題的重複:http://stackoverflow.com/questions/15262319/displaying-a-mysql-timediff-in-a-db-grid,但我不能因爲這有一個開放的賞金,但我真的沒有得到兩個問題的區別! – jachguate