我的MySQL数据库中有一个名为test
的表。以下是它的创建方式。
CREATE TABLE `test` (
`update_date` varchar(10) NOT NULL,
`value` double NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8
以下是其数据。
我按照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
不接受它
答案 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}}值。