Автор Тема: [Данные, строки] Получение даты и времени из базы и вывод в консоль  (Прочитано 1295 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн itskun [?]

  • Новичок
  • *
  • Сообщений: 1
  • Репутация: 0
    • Награды
Версия AutoIt: 3.3.12.0

Описание:
Подключиться к базе postgresql.
Выполнить SQL запрос и получить данные, которые являются датой в формате "2015-02-11 11:15:33.659296"
Далее нужно высчитать сколько времени прошло с момента этой даты и вывести в консоль в формате секунд/минут/часов/дней и тд, в зависимости от того, сколько времени прошло (в консоли должна быть такая фраза к примеру "Это событие совершилось 30 сек назад" или "Это событие совершилось 11 часов назад").

Примечания: Есть набросок ниже, но я не пойму почему он не работает и почему в консоль выводятся кракозябры... (P.S. Вообще это костыль к нагиосу).

Код: AutoIt [Выделить]
Func check_com()
        Global $opgsqlerror = ObjEvent("AutoIt.Error", "_pgsqlError")
        Dim $sdbserverip = "localhost"
        Dim $sdbusername = "postgres"
        Dim $sdbpassword = "pass"
        Dim $sdatabase = "base"
        Dim $stablename = "log_s"
        Global $pgsqlconn = ObjCreate("ADODB.Connection")
        $pgsqlconn.open("DRIVER={PostgreSQL ANSI(x64)};SERVER=" & $sdbserverip & ";DATABASE=" & $sdatabase & ";UID=" & $sdbusername & ";PWD=" & $sdbpassword & ";PORT=5432")
        Dim $rowcount = 0
        $orowcountquery = $pgsqlconn.execute("SELECT MAX(`srv_time`) FROM `" & $stablename & "`")
        With $orowcountquery
            While NOT .eof
                $rowcount += $orowcountquery.fields(0).value
                .movenext
            WEnd
        EndWith
        Local $idatecalc = _datediff("s", dtformat($rowcount), _nowcalc())
        _consolewrite("The last package came: " & seconds2format($idatecalc) & " ago.")
        $pgsqlconn.close
        If $cmdline[0] <> 0 Then
            If getstartparameter("-c") < $idatecalc Then
                _exit(2)
            EndIf
            If getstartparameter("-w") < $idatecalc Then
                _exit(1)
            EndIf
            _exit(0)
        EndIf
    EndFunc
   
    Func _pgsqlerror()
        $hexnumber = Hex($opgsqlerror.number, 8)
        _consolewrite("Err.description is  : " & @TAB & $opgsqlerror.description & @CRLF & "err.windescription  : " & @TAB & $opgsqlerror.windescription & @CRLF & "err.number is       : " & @TAB & $hexnumber & @CRLF & "err.lastdllerror is : " & @TAB & $opgsqlerror.lastdllerror & @CRLF & "err.scriptline is   : " & @TAB & $opgsqlerror.scriptline & @CRLF & "err.source is       : " & @TAB & $opgsqlerror.source & @CRLF & "err.helpfile is     : " & @TAB & $opgsqlerror.helpfile & @CRLF & "err.helpcontext is  : " & @TAB & $opgsqlerror.helpcontext)
        _exit(2)
        SetError(1)
    EndFunc


    Func dtformat($dt)
        If StringLen($dt) = 14 Then
            $yyyy = StringLeft($dt, 4)
            $mm = StringMid($dt, 5, 2)
            $dd = StringMid($dt, 7, 2)
            $hh = StringMid($dt, 9, 2)
            $mn = StringMid($dt, 11, 2)
            $ss = StringRight($dt, 2)
            Return $yyyy & "/" & $mm & "/" & $dd & " " & $hh & ":" & $mn & ":" & $ss
        EndIf
        Return -1
    EndFunc

    Func seconds2format($dt)
        If $dt >= 86400 Then Return Int($dt / 86400) & " " & "days"
        If $dt >= 3600 Then Return Int($dt / 3600) & " " & "hours"
        If $dt >= 60 Then Return Int($dt / 60) & " " & "minutes"
        If $dt < 60 Then Return $dt & " " & "seconds"
    EndFunc

    Func getstartparameter($input)
        If $cmdline[0] = 0 Then Return 0
        Dim $retparam
        For $i = 1 To $cmdline[0]
            If $input = $cmdline[$i] AND $i < $cmdline[0] Then $retparam = $cmdline[$i + 1]
            If $input = $cmdline[$i] AND $i = $cmdline[0] Then $retparam = 1
        Next
        Return $retparam
    EndFunc
#EndRegion Includes
Dim $sscriptversion = "1.00"
If IniRead("nsclient.ini", "/settings/default", "password", "0") <> getstartparameter("-p") Then
    _consolewrite("Password Invalid")
    _exit(2)
EndIf
If getstartparameter("-t") == "com" Then check_com()
$aux = getstartparameter("-run")
If $aux Then
    $aux = StringReplace($aux, "%", " ")
    $aux = StringReplace($aux, "#", '"')
    ConsoleWrite("Run command: " & $aux)
    RunWait($aux)
    _consolewrite(" ................. Done ")
    _exit(0)
EndIf
_exit(3)

Func _exit($aux)
    _consolewrite("Script version: " & $sscriptversion)
    Exit $aux
EndFunc

Func _consolewrite($aux)
    ConsoleWrite($aux & @CRLF)
EndFunc

« Последнее редактирование: Март 13, 2015, 12:40:16 от itskun »

Русское сообщество AutoIt


 

Похожие темы

  Тема / Автор Ответов Последний ответ
1 Ответов
2407 Просмотров
Последний ответ Декабрь 17, 2011, 15:05:41
от axlwor
1 Ответов
4126 Просмотров
Последний ответ Март 02, 2012, 13:15:40
от ---Zak---
2 Ответов
4545 Просмотров
Последний ответ Апрель 15, 2012, 13:37:51
от Redline
2 Ответов
3387 Просмотров
Последний ответ Август 20, 2012, 21:05:09
от VasiliyRS
1 Ответов
1777 Просмотров
Последний ответ Август 17, 2014, 09:26:30
от WSWR
2 Ответов
6072 Просмотров
Последний ответ Август 25, 2015, 13:54:38
от Yashied
5 Ответов
2072 Просмотров
Последний ответ Ноябрь 10, 2015, 10:51:18
от belovkirill
20 Ответов
3708 Просмотров
Последний ответ Сентябрь 05, 2016, 14:17:01
от InnI
1 Ответов
643 Просмотров
Последний ответ Апрель 28, 2017, 15:42:43
от inververs
3 Ответов
1025 Просмотров
Последний ответ Февраль 02, 2018, 07:01:41
от Astel064