MySQL CURTIME() 总是 00:00:00

jam*_*ate 3 mysql solaris time

我在 Solaris 10u8 上安装了 MySQL 服务器。直到最近,一切都运行良好。然后突然之间,根据 MySQL 的当前时间总是 00:00:00。CURDATE() 似乎工作正常,只是它给出的时间仍然是 00:00:00。我在下面有一些关于我的问题的插图。我试过重新启动机器。我不知道该怎么做,这弄乱了我的 Web 应用程序。有任何想法吗?

-bash-4.1$ Fri Jul  9 11:01:42 EDT 2010
.......
.......
mysql> create table timetest (datetime datetime);
Query OK, 0 rows affected (0.01 sec)

mysql> insert into timetest values (curtime());
Query OK, 1 row affected, 1 warning (0.01 sec)

mysql> select * from timetest;
+---------------------+
| datetime            |
+---------------------+
| 0000-00-00 00:00:00 |
+---------------------+
1 row in set (0.00 sec)

mysql> insert into timetest values (curdate());
Query OK, 1 row affected (0.00 sec)

mysql> select * from timetest;
+---------------------+
| datetime            |
+---------------------+
| 0000-00-00 00:00:00 |
| 2010-07-09 00:00:00 |
+---------------------+
2 rows in set (0.00 sec)
Run Code Online (Sandbox Code Playgroud)

War*_*ner 5

您收到的警告如下:

+---------+------+-----------------------------------------------+
| Level   | Code | Message                                       |
+---------+------+-----------------------------------------------+
| Warning | 1265 | Data truncated for column 'datetime' at row 1 |
+---------+------+-----------------------------------------------+
Run Code Online (Sandbox Code Playgroud)

show warnings;当识别出警告时,您可以通过在执行另一个查询之前运行when来查看它。

架构不支持您尝试插入的数据时间。例如:

mysql> select curtime();
+-----------+
| curtime() |
+-----------+
| 11:18:19  |
+-----------+
1 row in set (0.00 sec)
Run Code Online (Sandbox Code Playgroud)

curdate() 只产生日期:

mysql> select curdate();
+------------+
| curdate()  |
+------------+
| 2010-07-09 |
+------------+
1 row in set (0.00 sec)
Run Code Online (Sandbox Code Playgroud)

now() 以您想要的格式生成数据:

mysql> select now();
+---------------------+
| now()               |
+---------------------+
| 2010-07-09 11:20:31 |
+---------------------+
1 row in set (0.00 sec)
Run Code Online (Sandbox Code Playgroud)

看:

mysql> insert into timetest values(now());
Query OK, 1 row affected (0.00 sec)

mysql> select * from timetest;
+---------------------+
| datetime            |
+---------------------+
| 0000-00-00 00:00:00 |
| 2010-07-09 11:20:56 |
+---------------------+
2 rows in set (0.00 sec)
Run Code Online (Sandbox Code Playgroud)