根据当前日期的小日期查询以获取记录?

cbeh67ev  于 2021-07-27  发布在  Java
关注(0)|答案(3)|浏览(341)

我有一个专栏 loginDate 在table上。此列的值类型为 Date . 现在我将iso日期格式值存储在其中 2020-07-30 18:43:09.000000 .
现在我想写一个查询,其中logindate month 以及 year 应该小一点。比如说现在的日期 30 July 2020 所以我只想得到较小月份和年份的记录。所以我不应该得到 July 一个月。我应该得到更小的月份和年份,如2020年6月,2019年7月等,请告诉我应该查询什么。
我试过了 SELECT * FROM useres where loginDate < date_add(CURDATE(),INTERVAL 0 DAY) ;
但这也会得到7月份的记录。

mbyulnm0

mbyulnm01#

你应该把日期分成月份和年份。然后用这些创建一个新的日期,并用于第1天。然后简单地与当前日期进行比较。

WHERE
STR_TO_DATE( SUBSTR(loginDate,1,10 ), '%Y-%m-%d')
<
STR_TO_DATE( 
CONCAT( 
    YEAR( CURRENT_DATE() ), '-', 
    LPAD( MONTH( CURRENT_DATE() ) ,2,'00'),
    '-01'   )
,'%Y-%m-%d' )
ghg1uchk

ghg1uchk2#

替代日期表达式:
所以上个月是:

WHERE last_day(curdate() - interval 2 month)+ interval 1 day <= login_date AND
 login_date < curdate() - interval (day(curdate())-1) day

上年当月为:

WHERE last_day(curdate() - interval 1 year - interval 1 month) + interval 1 day <= login_date AND
 login_date < curdate() - interval (day(curdate())-1) day - interval 1 year
zzoitvuj

zzoitvuj3#

我想你想要:

where login_date < curdate() + interval (1 - day(curdate()) day

这将获取当前月份第一个日期之前的所有行。

相关问题