表结构如下:
mysql> desc orders; +--+--+--+--+--+--+ | Field | Type | Null | Key | Default | Extra | +--+--+--+--+--+--+ | order_num | int(11) | NO | PRI | NULL | auto_increment | | order_date | datetime | NO | | NULL | | | cust_id | int(11) | NO | MUL | NULL | | +--+--+--+--+--+--+ 3 rows in set (0.02 sec)
order_date 字段是datetime类型,但是datetime怎么会跟字符串匹配成功?
mysql> select * from orders where order_date="2005-09-01 00:00:01"; +--+--+--+ | order_num | order_date | cust_id | +--+--+--+ | 20005 | 2005-09-01 00:00:01 | 10001 | +--+--+--+ 1 row in set (0.00 sec)
莫非不应该是如下这样吗:
mysql> select * from orders where order_date=str_to_date("2005-09-01 00:00:01","%Y-%m-%d %H:%i:%s"); +--+--+--+ | order_num | order_date | cust_id | +--+--+--+ | 20005 | 2005-09-01 00:00:01 | 10001 | +--+--+--+ 1 row in set (0.00 sec)
新手,比较困惑,谢谢各位了
解决方案
40
MySQL中日期常量就是用字符串来表示。MYSQL会自动对数据进行类型隐式转换。