Esqueci de atualizar este tópico. Encontrei a solução no mesmo dia usando o seguinte
mysql -u$SQLUSER -p$SQLPASS -e "use $DB; select creationdate,login,package,expirydate,mobile from users WHERE creationdate >= NOW() - INTERVAL 5 MINUTE;"
Eu tenho um comando bash buscando detalhes da conta de usuário do MySQL usando o comando
select creationdate from users;
que me dá o seguinte resultado
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
Agora, o que eu quero é combinar cada usuário ACCOUNT , CREATION , DATE com a data atual, e se a data de criação for menor de 5 minutos, ele deve listar as contas como
New accounts are user2 and user3
Algo parecido. Para que eu possa enviar SMS para eles que suas contas estão registradas agora.
Esqueci de atualizar este tópico. Encontrei a solução no mesmo dia usando o seguinte
mysql -u$SQLUSER -p$SQLPASS -e "use $DB; select creationdate,login,package,expirydate,mobile from users WHERE creationdate >= NOW() - INTERVAL 5 MINUTE;"
mysql deve poder fazer isso por você. Mas se você tiver que pós-processar essa saída, eu usaria:
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}'
Isso pressupõe que os nomes de usuário não podem conter caracteres de espaçamento.
Com o GNU awk, você faria
awk '
{ time = $2 " " $3; gsub(/[-:]/, " ", time); t = mktime(time) }
(systime() - t) <= 300 {print $1}
'