Php 奇怪的查询行为
我有下表:Php 奇怪的查询行为,php,mysql,Php,Mysql,我有下表: +-------------+------------------+------+-----+-------------------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------------+------------------+------+-----+-------------------+-------
+-------------+------------------+------+-----+-------------------+----------------+
| 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 | |
+-------------+------------------+------+-----+-------------------+----------------+
我需要根据创建和执行一组查询的日期删除一些记录:
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 |
然后
最后我得到:
mysql> select DATE('created_on') from categories limit 10;
+--------------------+
| DATE('created_on') |
+--------------------+
| NULL |
| NULL |
| NULL |
| NULL |
如您所见,日期转换不正确。大约10分钟后工作正常:
mysql> select date(created_on) from categories limit 10;
+------------------+
| date(created_on) |
+------------------+
| 2013-01-14 |
| 2012-08-15 |
| 2012-09-06 |
| 2012-09-06 |
我确信在运行查询时数据是完整的
所以我的问题是:有人能解释为什么日期函数在同一输入上显示不同的结果吗?您必须使用::
select DATE(created_on) from categories limit 10;
通过使用倒逗号,您要求数据库将'created_on'
视为参数,并且由于无法将其转换为日期类型,因此您将得到null,您必须使用:
select DATE(created_on) from categories limit 10;
select DATE('created_on') from categories limit 10;
通过使用倒逗号,您要求数据库将'created_on'
作为参数,并且由于它不能转换为日期类型,因此您将得到null
select DATE('created_on') from categories limit 10;
字符串与列:
select DATE(created_on) from categories limit 10;
字符串与列:
select DATE(created_on) from categories limit 10;
输入不一样。有一次,你让它将文本“created_on”投射到日期字段;导致每个记录为空,因为它无法执行此操作。另一次,你告诉它实际使用一个时间戳字段,只返回日期部分。输入不一样。有一次,你让它将文本“created_on”投射到日期字段;导致每个记录为空,因为它无法执行此操作。另一次,你告诉它实际使用时间戳字段,只返回日期部分。谢谢,我能够自己看到你的编辑有什么问题:)谢谢,我能够自己看到你的编辑有什么问题:)