对不起,我对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