mysql时间类型的问题

gaoshan15 2005-10-31 05:09:13
在mysql中建了表,其结构如下:
CREATE TABLE myTable
(ID VARCHAR(50) NOT NULL,
STORE_TIME TIMESTAMP NULL,
);
执行“insert into myTable(id,store_time) values('1',null)”后,再执行查询语句,结果为:
+----+----------------+
| id | store_time |
+----+----------------+
| 1 | 20051031000000 |
本来想插入一个为null的日期,结果mysql自做聪明,将当前时间替代了null,有什么办法能改变mysql的这种默认做法?是不是所有版本的mysql都这样?
...全文
107 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
shuixin13 2005-10-31
  • 打赏
  • 举报
回复
你用的是 timestamp
是不可以被设置为 NULL的

示例(译者注):

mysql> CREATE TABLE `tA` (
-> `id` int(3) unsigned NOT NULL auto_increment,
-> `date1` timestamp(14) NOT NULL,
-> `date2` timestamp(14) NOT NULL,
-> PRIMARY KEY (`id`)
-> ) TYPE=MyISAM;
Query OK, 0 rows affected (0.01 sec)

mysql> INSERT INTO `tA` SET `id` = 1;
Query OK, 1 row affected (0.02 sec)

# 没有明确地指定第一个 timestamp 列值,该列值被设为插入的当前时刻
# 没有明确地指定其它的 timestamp 列值,MySQL 则认为插入的是一个非法值,而该列值被设为0

mysql> INSERT INTO `tA` VALUES (2, NOW(), NULL);
Query OK, 1 row affected (0.01 sec)

mysql> SELECT * FROM `tA`;
+----+----------------+----------------+
| id | date1 | date2 |
+----+----------------+----------------+
| 1 | 20030503104118 | 00000000000000 |
| 2 | 20030503104254 | 20030503104254 |
+----+----------------+----------------+



如果你一定要用 NULL 的话,建议改为 DATETIME 类型
gaoshan15 2005-10-31
  • 打赏
  • 举报
回复
有什么办法将mysql时间类型的某列值设置为null?

56,678

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧