您好我正在使用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”。
谢谢。
答案 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
并在其上创建索引。