在mysql中存储在varchar中的日期之间搜索数据

use*_*114 5 mysql compare date between

我存储我列server_date_time日期中varchardd/mm/yyyy格式,我想,所以我必须使用的查询来获取一些日期之间躺在记录

    select * from activity_emp 
where date_format(str_to_date(substr(server_date_time,1,10),'%d/%m/%Y'),'%d/%m/%Y')>=
'29/09/2012'
    and date_format(str_to_date(substr(server_date_time,1,10),'%d/%m/%Y'),'%d/%m/%Y')<=
'07/10/2012';
Run Code Online (Sandbox Code Playgroud)

我已varchar在查询中转换为字符串,但我的查询返回的查询数据仅与29/09/2012和30/09/2012相关.它还应该返回10月份的查询

raj*_*ndy 7

试试这个.你可以像你的问题一样以dd/mm/yyyy格式输入日期......

SELECT * FROM activity_emp
WHERE STR_TO_DATE(server_date_time, '%d/%m/%Y')
  BETWEEN STR_TO_DATE('29/08/2012', '%d/%m/%Y')
    AND STR_TO_DATE('07/10/2012', '%d/%m/%Y')
Run Code Online (Sandbox Code Playgroud)

更新:我强烈建议您将数据类型从更改VARCHARDATETIME

干杯!!!


Joh*_*Woo 1

STR_TO_DATE足够。DATE_FORMAT将其改回VARCHAR

SELECT...
FROM...
WHERE str_to_date(substr(server_date_time,1,10),'%d/%m/%Y') 
         BETWEEN '29/09/2012' AND '07/10/2012'
Run Code Online (Sandbox Code Playgroud)

交易时date请使用DATEDATETIME数据类型。这将避免您进行影响查询性能的转换。