正在寻找TSQLTimeStamp的编码示例

Maw*_*awg 1 mysql delphi timestamp

Delphi XE2和MySql.

之前的问题导致我建议我应该使用MySql的本机TIMESTAMP数据类型来存储日期/时间.

不幸的是,我似乎无法找到任何编码示例,而且我得到了奇怪的结果.

鉴于此表:

mysql> describe test_runs;
+------------------+-------------+------+-----+---------------------+-------+
| Field            | Type        | Null | Key | Default             | Extra |
+------------------+-------------+------+-----+---------------------+-------+
| start_time_stamp | timestamp   | NO   | PRI | 0000-00-00 00:00:00 |       |
| end_time_stamp   | timestamp   | NO   |     | 0000-00-00 00:00:00 |       |
| description      | varchar(64) | NO   |     | NULL                |       |
+------------------+-------------+------+-----+---------------------+-------+
3 rows in set (0.02 sec)
Run Code Online (Sandbox Code Playgroud)

我喜欢:

  • 声明一个我可以存储结果的变量SELECT CURRENT_TIMESTAMP- 它应该是什么类型的?TSQLTimeStamp
  • 在测试开始处插入一行,其中start_time_stamp=上面的变量
  • end_time_stamp=一些"NULL"值..."0000-00-00 00:00:00"?我可以直接使用它,还是需要声明a TSQLTimeStamp并将每个字段设置为零?(似乎没有TSQLTimeStamp.Clear;- 它是一个结构,而不是一个类
  • UPADTE的end_time_stamp测试完成时
  • 计算测试持续时间

请问somene请指出一个带有一些Delphi代码的URL,我可以研究一下,看看如何做这类事情?GINMF.

Sir*_*ufo 6

我不知道为什么你想用那个TIMESTAMP来解决这个问题,以及为什么你想要检索CURRENT_TIMESTAMP只是为了把它放回去.

如前所述,将TIMESTAMP字段用作PRIMARY KEY并不是一个好建议.

所以我的建议是使用这个TABLE SCHEMA

CREATE TABLE `test_runs` (
    `id` int(11) NOT NULL AUTO_INCREMENT,
    `start_time_stamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
    `end_time_stamp` timestamp NULL DEFAULT NULL,
    `description` varchar(64) NOT NULL,
    PRIMARY KEY (`id`)
);
Run Code Online (Sandbox Code Playgroud)

开始测试运行由

INSERT INTO test_runs ( description ) VALUES ( :description );
SELECT LAST_INSERT_ID() AS id;
Run Code Online (Sandbox Code Playgroud)

并完成你简单的电话记录

UPDATE test_runs SET end_time_stamp = CURRENT_TIMESTAMP WHERE id = :id
Run Code Online (Sandbox Code Playgroud)