Mysql-Date()在WHERE子句中的工作似乎很奇怪
我有一个Mysql-Date()在WHERE子句中的工作似乎很奇怪,mysql,Mysql,我有一个MySQL表 | id | user_id | steps_date | steps | target | created_at | |----|---------|------------|-------|--------|---------------------| | 1 | 3 | 2017-01-07 | 3000 | 6000 | 2017-01-07 20:45:33 | | 2 | 3 | 2017-01-09 | 25
MySQL
表
| id | user_id | steps_date | steps | target | created_at |
|----|---------|------------|-------|--------|---------------------|
| 1 | 3 | 2017-01-07 | 3000 | 6000 | 2017-01-07 20:45:33 |
| 2 | 3 | 2017-01-09 | 2545 | 6000 | 2017-01-08 22:15:47 |
| 3 | 3 | 2017-01-10 | 5687 | 6000 | 2017-01-08 21:11:22 |
steps\u date
列的数据类型为date
,created\u at
的数据类型为timestamp
而且,我正在启动一个查询,以获取steps\u date>=2017-01-07
和steps\u date='2017-01-07'的记录
和日期(步骤和日期)在
SELECT * FROM user_steps_data WHERE user_id = 3 and steps_date between '2017-01-07' AND '2017-01-09';
在
SELECT * FROM user_steps_data WHERE user_id = 3 and steps_date between '2017-01-07' AND '2017-01-09';
尝试使用MySQL
介于
条件之间。它用于检索选择
、插入
、更新
或删除
语句中某个范围内的值
SELECT * FROM order_details WHERE order_date BETWEEN CAST('2014-02-01' AS DATE) AND CAST('2014-02-28' AS DATE);
尝试使用MySQL
介于
条件之间。它用于检索选择
、插入
、更新
或删除
语句中某个范围内的值
SELECT * FROM order_details WHERE order_date BETWEEN CAST('2014-02-01' AS DATE) AND CAST('2014-02-28' AS DATE);
DATE(步骤\日期)哎呀!!打字错误同样,它仍然只返回步骤日期2017-01-09
,而不是2017-01-07
。为什么?用于这种查询,它将避免这种错误<代码>步骤日期在'2017-01-07'和'2017-01-09'之间
只需使用步骤日期>='2017-01-07'和步骤日期在从用户步骤数据中选择*之间使用,其中用户id=3,日期在'2017-01-07'和'2017-01-09'之间<代码>日期(步骤\日期)哦!!打字错误同样,它仍然只返回步骤日期2017-01-09
,而不是2017-01-07
。为什么?用于这种查询,它将避免这种错误<代码>步骤日期在'2017-01-07'和'2017-01-09'之间
只需使用步骤日期>='2017-01-07'和步骤日期在从用户步骤数据中选择*之间使用,其中用户id=3,日期在'2017-01-07'和'2017-01-09'之间;这里的重要修复是不需要强制转换,因为字段已经是日期
。强制转换将阻止MySQL使用任何底层索引这里的重要修复是不需要强制转换,因为该字段已经是日期
。强制转换将阻止MySQL使用任何底层索引