mysql - 在 MySQL 中插入时间戳值的问题

标签 mysql ado

还有一些其他问题,人们对时间戳全为零有疑问。我已经检查过了,这不是重复的。

我这样声明一个表:

CREATE TABLE  `my_db`.`my_table` (
  `time_stamp` timestamp NOT NULL,
  `author` varchar() NOT NULL,
  `text` text NOT NULL,
  `md5` int(11) NOT NULL,
  PRIMARY KEY (`time_stamp`)
) ;

我还有第二个表,它将时间戳作为主键,它们应该具有相同的值。

在 Delphi 中编码,我使用 SELECT CURRENT_TIMESTAMP 返回类似 '19/6/2010 4:56:17 AM' 的内容,然后我在 INSERT 语句中使用它. INSERT 成功,但时间戳全为零。

我做错了什么?

这是插入代码:

  sqlCommand := 'INSERT INTO my_db.my_table(time_stamp, author, text, md5) VALUES ("' 
                   + timestamp + 
                    '", "mawg", ' +
                    '"Hello, world"' +
                    0 +
                    '");';
  Result := DoSQlCommandWithNoResultSet(sqlCommand, AdoConnection);

插入率极低,每隔几周或几个月插入一次,所以我很高兴将时间戳作为主键。我保留了事物的“版本”,所以时间戳对我来说很有意义。

我恳求认为这是一个 ADO 问题,尽管我希望 ADO 只是“通过”。我没有看到任何其他解决方案。在控制台中,输出是“正确的”,但是在 Delphi 中通过 ADO 运行时,输出是错误的

我可以向 MySQL 指定它应该如何格式化它的日期吗?

最佳答案

查看 MySQL 文档后,如果您的 timestamp 值格式不正确,通常会导致时间戳为 '0000-00-00 00:00:00' 。 在任何情况下,您都不需要指定时间戳值——这是 TIMESTAMP 优于 DATETIME 的好处。即使您这样做了,您也可以简单地将其设置为 NOW() 而不是运行不必要的 SELECT 语句。

编辑:

此外,我知道您说过您考虑周全,但您是否考虑过夏令时?当时钟在秋季拨回时,这可能会导致两条记录具有相同的时间戳。

编辑 2:

K,我不知道为什么我没有早点发现,但是你提供的时间戳格式不正确。尝试插入有效的时间戳,例如 '2010/06/19 4:56:17'。 MySQL 对日期和时间值的解析非常宽松,但它始终必须是年-月-日和时-分-秒。

编辑 3:

好吧,这似乎有点困惑,所以我要在 DATETIME format 上发布来自 MySQL 5.0 文档页面的引述。 :

For values specified as strings that include date part delimiters, it is not necessary to specify two digits for month or day values that are less than 10. '1979-6-9' is the same as '1979-06-09'. Similarly, for values specified as strings that include time part delimiters, it is not necessary to specify two digits for hour, minute, or second values that are less than 10. '1979-10-30 1:2:3' is the same as '1979-10-30 01:02:03'.

关于mysql - 在 MySQL 中插入时间戳值的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3074406/

相关文章:

php - 数据库中的简单 PHP 搜索不会显示结果

php - 在 mysql 中插入类似的值,但使用单个查询多次更改日期列

sql-server - 更改 SQL Server 连接上的应用程序名称

Delphi 5 - TField 上的尺寸不匹配

mysql - 如何在 MySQL 中返回数据透视表输出?

mysql - 字段长度对查询时间的影响

php - Memcached/XCache 缓存 SQL 结果?

c++ - 构建 ADO Recordset 时是否将数据拉入内存?

delphi - 在 Delphi OLEDB 中加密 SQLite 数据库

delphi - TClientDataSet.ApplyUpdates() 不应用更新