如何基于Sql中的日期获取行范围?

时间:2019-02-13 10:19:49

标签: mysql

我是SQL的新手,我有一个病人表列表,现在我需要根据日期获取病人,因此我在列中带有date_column。但是date_column为字符串格式,我无法获取某些日期之间的值范围。这是我尝试过的

SELECT * 
  FROM Patients 
 WHERE date_column >= '2018-01-01' 
   AND date_column <= '2019-01-01';

但是问题是我的日期字符串像这样的Mon Jan 01 00:00:00 GMT 2018,所以得到的结果是意外的和错误的行。

即使我尝试过

STR_TO_Date将字符串转换为日期格式,但是我没有找到高于日期格式的格式。

所以请有人帮助我

1 个答案:

答案 0 :(得分:1)

请考虑以下内容:

SELECT STR_TO_DATE(REPLACE('Mon Jan 01 00:00:00 GMT 2018','GMT',''),'%a %b %d %H:%i:%s %Y')x;
+---------------------+
| x                   |
+---------------------+
| 2018-01-01 00:00:00 |
+---------------------+

SELECT STR_TO_DATE('Mon Jan 01 00:00:00 GMT 2018','%a %b %d %H:%i:%s GMT %Y')x;
+---------------------+
| x                   |
+---------------------+
| 2018-01-01 00:00:00 |
+---------------------+

现在修复您的架构!