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;"

관련 정보