我有一个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;"