J'ai le tableau ci-dessous:comportement étrange de requête
+-------------+------------------+------+-----+-------------------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------------+------------------+------+-----+-------------------+----------------+
| category_id | int(11) unsigned | NO | PRI | NULL | auto_increment |
| title | varchar(64) | NO | | NULL | |
| description | text | NO | | NULL | |
| created_on | timestamp | NO | | CURRENT_TIMESTAMP | |
| updated_on | timestamp | YES | | NULL | |
+-------------+------------------+------+-----+-------------------+----------------+
je devais supprimer des enregistrements en fonction de la date de création et exécuté un ensemble de requêtes:
mysql> select created_on from categories limit 10;
+---------------------+
| created_on |
+---------------------+
| 2013-01-14 09:26:21 |
| 2012-08-15 11:18:38 |
| 2012-09-06 06:44:46 |
| 2012-09-06 23:27:14 |
puis
mysql> select date('2013-01-14 09:26:21');
+-----------------------------+
| date('2013-01-14 09:26:21') |
+-----------------------------+
| 2013-01-14 |
+-----------------------------+
et finalement j'ai obtenu:
mysql> select DATE('created_on') from categories limit 10;
+--------------------+
| DATE('created_on') |
+--------------------+
| NULL |
| NULL |
| NULL |
| NULL |
Comme vous pouvez le voir, la date n'a pas été convertie correctement. En environ 10 minutes est travaillé ok:
mysql> select date(created_on) from categories limit 10;
+------------------+
| date(created_on) |
+------------------+
| 2013-01-14 |
| 2012-08-15 |
| 2012-09-06 |
| 2012-09-06 |
Je suis sûr que les données étaient intactes pendant que j'exécutais les requêtes.
Donc ma question:
Quelqu'un peut-il expliquer pourquoi la fonction date a montré des résultats différents sur la même entrée?
l'entrée n'a pas été le même. une fois, vous lui avez dit de lancer le texte 'created_on' dans un champ de date; résultant en Null pour chaque enregistrement car il ne pouvait pas le faire. L'autre fois, vous lui avez demandé d'utiliser un champ d'horodatage et de renvoyer la partie date. – xQbert