0

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

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

下面是它的数据。

在此处输入图像描述

我按照此处选择的答案中的描述运行以下查询

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

这应该返回 1800,但它返回的是NULL. 为什么会这样,我怎样才能得到正确的答案?

非常重要:我必须使用StringforDate因为我必须以格式保存日期dd-mm-yyyy并且 mysqlDate不接受它。

4

1 回答 1

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值。Y-m-d

于 2014-10-05T08:18:36.930 回答