Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 我的Sql日期比较,包括给定的日期范围_Mysql_Sql - Fatal编程技术网

Mysql 我的Sql日期比较,包括给定的日期范围

Mysql 我的Sql日期比较,包括给定的日期范围,mysql,sql,Mysql,Sql,我将日期存储为UpdateOn(值如'2012-11-12 12:38:43') 我的问题是: select * from mytable where updatedOn >= '11/12/2012' AND updatedOn <= '11/12/2012' 从mytable中选择* 其中updatedOn>='11/12/2012'和updatedOn您需要获取updatedOn列的组件,并将日期文本格式化为以下格式之一: 或者,使用MySQL函数将字符串转换为MySQL日

我将日期存储为UpdateOn(值如'2012-11-12 12:38:43')

我的问题是:

select * from mytable 
where updatedOn >= '11/12/2012' AND updatedOn <= '11/12/2012'
从mytable中选择*
其中updatedOn>='11/12/2012'和updatedOn您需要获取
updatedOn
列的组件,并将日期文本格式化为以下格式之一:

或者,使用MySQL函数将字符串转换为MySQL日期:

SELECT *
FROM   mytable
WHERE  DATE(updatedOn) BETWEEN STR_TO_DATE('11/12/2012', '%d/%m/%Y')
                           AND STR_TO_DATE('11/12/2012', '%d/%m/%Y') 

如果避免使用
,则应使用日期函数-

SELECT
  *
FROM
  mytable
WHERE
  DATE(updatedOn) = '2012-12-11'
你需要试一试

select * from mytable 
where updatedOn >= '11/12/2012' AND updatedOn <= '11/12/2012 23:59:59.999'
从mytable中选择*

其中updatedOn>='11/12/2012'和updatedOn如果
updatedOn
字段被索引,并且您希望使用该索引`您不应该在
DATE(updatedOn)
上执行筛选。您的函数和操作需要在常量上,而不是在您正在搜索的字段上。当然,这是一种简洁方便的输入逻辑的方法,但它会破坏优化程序为该筛选器使用索引的能力。如果
UpdatedOn
字段已编制索引,并且您希望使用该索引,则决不能在
DATE(UpdatedOn)
上执行筛选器。您的函数和操作需要在常量上,而不是在您正在搜索的字段上。当然,这是一种简洁方便的输入逻辑的方法,但它会破坏优化者使用该过滤器索引的能力。@Dems:同意。你的答案更符合索引。那么
11/12/2012 23:59:59.01
呢?或者
11/12/2012 23:59:59.001
?那
11/12/2012 23:59:59.9991
呢?我想指出的是,使用
我认为mysql只存储精度为1毫秒的日期/时间,但我同意你的看法,你的答案更准确、更优雅,我只是提供了另一种选择。@Ankur:你说得对,但是(已经存在的)已经和(即将出现的)尽管如此,这个答案还是排在DEM的第二位,因为这个答案也可以作为索引使用。如果你对日期使用相同的格式,比如
'2012-11-12'
,而不是OP的问题
'11/12/2012'
SELECT
  *
FROM
  mytable
WHERE
  DATE(updatedOn) = '2012-12-11'
select * from mytable 
where updatedOn >= '11/12/2012' AND updatedOn <= '11/12/2012 23:59:59.999'