我的MySQL表中有一个日期字段,我希望在12月1日之前获得所有行。因此,例如,如果我今天(2015年11月)运行查询,我应该返回的行将是2015年12月1日之前的任何日期。如果我在2015年12月1日之后但在2016年12月1日之前运行查询,它应该返回所有行2016年12月1日之前的日期。
很抱歉由于缺少代码,我真的不知道从哪里开始!
答案 0 :(得分:2)
我根据当前月份创建限制日期(使用now()
获取当前日期)。如果当前月份为12,则限制为明年的1-12(get_curr_date () {
# get unix time
DATE=$(date +%s)
echo "DATE_CURR : "$DATE
}
conv_utime_hread () {
# convert unix time to human readable format
DATE_HREAD=$(date -d @$DATE +%Y%m%d_%H%M%S)
echo "DATE_HREAD : "$DATE_HREAD
}
),否则为当前年份。
year(now()+1
答案 1 :(得分:1)
我认为你应该使用这样的东西:
SELECT *
FROM Table T
WHERE Some_Date < CASE
WHEN MONTH(CURDATE()) < 12 THEN STR_TO_DATE('01, 12, ' + YEAR(CURDATE())),'%d,%m,%Y')
ELSE STR_TO_DATE('01, 12, ' + YEAR(CURDATE() + 1)),'%d,%m,%Y')
END
免责声明:我没有mysql,所以我无法测试它。
答案 2 :(得分:0)
我也管理了我自己的解决方案
SELECT *
FROM table
WHERE date < DATE_ADD( MAKEDATE( IF( MONTH( CURRENT_DATE() ) < 12, YEAR( CURRENT_DATE() ), YEAR( CURRENT_DATE() + INTERVAL 1 YEAR ) ), 1), INTERVAL + 11 MONTH )