比较2个日期(字符串)时的结果无效

时间:2014-10-05 08:08:27

标签: mysql sql date varchar str-to-date

我的MySQL数据库中有一个名为test的表。以下是它的创建方式。

CREATE TABLE `test` (
 `update_date` varchar(10) NOT NULL,
 `value` double NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8

以下是其数据。

enter image description here

我按照here

的选定答案中的说明运行以下查询
SELECT SUM(`value`) FROM `test`
WHERE STR_TO_DATE(`update_date`, '%d-%m-%Y') BETWEEN '01-10-2014' AND '31-10-2014'

这应该返回1800,而是返回NULL。为什么这样,我怎样才能得到正确答案?

非常重要:我必须将String用于Date,因为我必须以dd-mm-yyyy格式保存日期,而mysql Date不接受它

1 个答案:

答案 0 :(得分:0)

试试这个:

 SELECT SUM(`value`) FROM `test`
 WHERE STR_TO_DATE(`update_date`, '%d-%m-%Y') 
 BETWEEN STR_TO_DATE('01-10-2014', '%d-%m-%Y') AND STR_TO_DATE('31-10-2014', '%d-%m-%Y')

或者您也可以这样做:

SELECT SUM(`value`) FROM `test`
WHERE STR_TO_DATE(`update_date`, '%d-%m-%Y') 
BETWEEN '2014-10-01' AND '2014-10-31'  -- in Y-m-d

两个查询都应返回 1800

请注意,STR_TO_DATE()会返回DATETIME格式的{{3}}值。