Mysql 选择两个月之间有年份差异的记录
我有一张表格,里面有按月份和年份划分的人的记录。 表有多个列,其中有两列是fldmonth和fldyear,分别包含月号和年 现在我想获取不同年份月份之间的数据。(如2012年3月至2013年6月) 我正在使用以下查询,但没有得到正确的记录Mysql 选择两个月之间有年份差异的记录,mysql,sql,select,between,Mysql,Sql,Select,Between,我有一张表格,里面有按月份和年份划分的人的记录。 表有多个列,其中有两列是fldmonth和fldyear,分别包含月号和年 现在我想获取不同年份月份之间的数据。(如2012年3月至2013年6月) 我正在使用以下查询,但没有得到正确的记录 SELECT * FROM 'table' WHERE user_id = 'id' AND STR_TO_DATE(CONCAT('fldyear', 'fldmonth', '01'), '%Y%m%d') BETWEEN STR_TO_DATE(CON
SELECT * FROM 'table' WHERE
user_id = 'id' AND
STR_TO_DATE(CONCAT('fldyear', 'fldmonth', '01'), '%Y%m%d') BETWEEN
STR_TO_DATE(CONCAT('2012', '3', '01'), '%Y%m%d') AND
STR_TO_DATE(CONCAT('2013', '6','01'), '%Y%m%d');
表架构:
user_id varchar(100), fldmonth smallint(2), fldyear mediumint(4)
(此处给出的表名和用户ID仅为示例)
请需要帮助
注意:我也使用了日期格式的%c,因为月份是1,2,…12格式。但是仍然得到空的结果集从列名中删除
单引号
试试这个:
SELECT *
FROM table
WHERE user_id = 'id' AND
STR_TO_DATE(CONCAT(fldyear, fldmonth, '01'), '%Y%c%d') BETWEEN '2012-03-01' AND '2013-06-01';
Saharsh Shah是对的,但您需要的是在您的情况下也添加括号
()
改变条件
WHERE user_id = 'id' AND
( STR_TO_DATE(CONCAT(fldyear, fldmonth, '01'), '%Y%m%d')
BETWEEN '2012-03-01' AND '2013-06-30' );
添加一个令人愉快的摘要,但数据是敏感的。请考虑示例示例。这个查询实际上有什么问题?至少发布您的表模式,如果没有字段名称,您希望如何帮助?真的很抱歉。是,但列的架构为。。用户_id varchar(100)、fldmonth smallint(2)、fldyear mediumint(4)@Shri你能发布你的表模式吗?@Shri Saharsh Shah是对的,但也可以看看。。实际上,您需要在您的条件中添加
()
括号..仍然获取空结果集。我可以使用limit子句吗?获取空结果集。
SELECT * FROM tbl
WHERE USERID=1 and
STR_TO_DATE(CONCAT(fldyear,'-',LPAD(fldmonth,2,'00'),'-',LPAD(fldate,2,'00')), '%Y-%m-%d')
BETWEEN
STR_TO_DATE(CONCAT(2012,'-',LPAD(03,2,'00'),'-',LPAD(01,2,'00')), '%Y-%m-%d') AND
STR_TO_DATE(CONCAT(2013,'-',LPAD(06,2,'00'),'-',LPAD(01,2,'00')), '%Y-%m-%d');