Bash 匹配两个变量的时间差

Bash 匹配两个变量的时间差

我有一个bash命令使用命令从 MySQL 获取用户帐户详细信息

select creationdate from users;

这给了我以下结果

Name     Account Creation Date   Mobile 
User1    2015-06-18 16:00:00     29292922
User2    2015-06-18 16:06:00     56896906
User2    2015-06-18 16:08:00     16842146

现在我想要的是将每个用户ACCOUNT, CREATION,DATE与当前日期时间相匹配,如果其创建日期不到 5 分钟,那么它应该列出类似的帐户

New accounts are user2 and user3

类似的事情。这样我就可以向他们发送短信,告知他们的帐户现已注册。

答案1

mysql应该能够为你做到这一点。但如果你必须对输出进行后处理,我会使用:

perl -MTime::Piece -lne '
  if (/^(\S+)\s+(\d{4}\S+\s+\S+)/ and
      $t = Time::Piece->strptime($2, "%Y-%m-%d %T") and
      time - $t->epoch <= 5*60
     ) {print $1}'

假设用户名不能包含空格字符。

答案2

使用 GNU awk,你会做

awk '
    { time = $2 " " $3; gsub(/[-:]/, " ", time); t = mktime(time) }
    (systime() - t) <= 300 {print $1}
'

答案3

我忘记更新这个线程了。当天使用以下方法找到了解决方案

mysql -u$SQLUSER -p$SQLPASS -e "use $DB; select creationdate,login,package,expirydate,mobile from users WHERE creationdate >= NOW() - INTERVAL 5 MINUTE;"

相关内容