从MySql中检索两个Varchar日期之间的数据

时间:2015-05-15 05:06:47

标签: mysql date

您好我正在使用Mysql Database.i有一个表Employee。 员工表描述如下。

Emp_id int(10),emp_name varchar(255),dob varchar(120) 

我将员工dob存储在

dd-MMM-yyyy formate (21-May-1990)

现在我想要所有员工的工作时间是1990年5月1日至1990年5月31日。

请告诉我如何在两个varchar日期之间获取数据

我编辑了我的问题。我的日期格式是“dd-MMM-yyyy”。

谢谢。

3 个答案:

答案 0 :(得分:1)

您必须使用STR_TO_DATE

将字符转换为日期
SELECT * from employee where STR_TO_DATE(dob,'%d-%M-%y') between '01.05.1990' and '31.05.1990'

但是为什么将日期存储为字符串?你应该把它存储为日期。

答案 1 :(得分:1)

使用STR_TO_DATE将字符串转换为DateTime数据类型STR_TO_DATE

SELECT Emp_id, emp_name, don
FROM employee   WHERE str_to_date(dob, '%m/%d/%Y') BETWEEN str_to_date('01-May-1990', '%m/%d/%Y') AND str_to_date('31-May-1990', '%m/%d/%Y')

答案 2 :(得分:1)

由于值存储为字符串,因此需要进行转换。 MySQL有一个名为STR_TO_DATE的内置函数。

SELECT Emp_id, emp_name
FROM TableName
WHERE STR_TO_DATE(dob,'%d-%M-%Y') >= '1990-05-01'
       AND STR_TO_DATE(dob,'%d-%M-%Y') <= '1990-05-31'

但是,对列使用函数不使用任何索引,并且会降低性能,尤其是在大型表上。一个好的解决方案是使用正确的数据类型Date并在其上创建索引。