mysql - 选择两个月之间有年份差异的记录

标签 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(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 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');

Working Fiddle

关于mysql - 选择两个月之间有年份差异的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21374421/

相关文章:

php - 如果不存在则插入到 MYSQL 数据库中

sql - 如何替换sql server中列的第一个和最后一个字符?

sql - 存储过程怎么写?

mySQL:如何从表中选择列表中的位置而不是另一个列表中

mysql - 如何在 1 个 sql 查询中从 4 个表中获取数据?

php - php 脚本需要 MySQL 数据库

php - Mysql排序连接值

mysql - 将此 SQL 查询转换为 Laravel?

mysql - 在 mysql 连接中添加第四个表

mysql - 从表A中选择表B中不存在的