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}
'