MySQL CURTIME () é sempre 00:00:00

3

Eu tenho um servidor MySQL instalado no Solaris 10u8. Até recentemente, tudo estava funcionando bem. Então, de repente, a hora atual de acordo com o MySQL é sempre 00:00:00. CURDATE () parece funcionar bem, exceto que o tempo que dá ainda é 00:00:00. Eu tenho algumas ilustrações do meu problema abaixo. Eu tentei reiniciar a máquina. Eu não tenho idéia do que fazer e isso está bagunçando meu aplicativo da web. Alguma idéia?

-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)
    
por Puddingfox 09.07.2010 / 17:04

2 respostas

5

O aviso que você está recebendo é o seguinte:

+---------+------+-----------------------------------------------+
| Level   | Code | Message                                       |
+---------+------+-----------------------------------------------+
| Warning | 1265 | Data truncated for column 'datetime' at row 1 |
+---------+------+-----------------------------------------------+

Você pode ver isso executando show warnings; quando antes de executar outra consulta quando um aviso é identificado.

O esquema não suporta o tempo de dados que você está tentando inserir. Por exemplo:

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

curdate() apenas produz a data:

mysql> select curdate();
+------------+
| curdate()  |
+------------+
| 2010-07-09 |
+------------+
1 row in set (0.00 sec)

now() produz os dados no formato que você deseja:

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

Veja:

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)
    
por 09.07.2010 / 17:19
1

você deve tentar agora ().

    
por 09.07.2010 / 17:13