Мои рабочие часы не могут работать из-за моего синтаксиса из базы данных - PullRequest
0 голосов
/ 20 января 2019

Я действительно запутался в этом синтаксисе. Я хочу бросить и уйти, чтобы получить общее количество часов работы, но оно не работает.

Вот мой код:

  con.Open();
        MySqlDataAdapter sda = new MySqlDataAdapter("Select name , logdate as 'Date' , min(logtime) as 'IN', max(logtime) as 'OUT'," +
            "CAST(((strftime('%s', max(logtime) ) - strftime('%s', min(logtime) )) % (60 * 60 * 24)) / (60 * 60) AS TEXT) || ':' || " +
            "CAST((((strftime('%s', max(logtime) ) - strftime('%s' , min(logtime) )) % (60 * 60 * 24)) % (60 * 60)) / 60 AS TEXT) as 'workHrs' " +
            "from Attendance1 group by name, logdate order by logdate", con);
        DataTable data = new DataTable();
        sda.Fill(data);
        dataGridView1.DataSource = data;
        con.Close();

enter image description here

enter image description here

1 Ответ

0 голосов
/ 20 января 2019

Ваш запрос содержит это:

CAST(some expression AS TEXT) || ':' || CAST(another expression AS TEXT)

Но || - это конкатенация строк Oracle.В MySQL вместо этого используйте CONCAT().

Если вы внимательно посмотрите на свое сообщение об ошибке, вы увидите, что MySQL взламывает около ||.

Похоже, вы пытаетесь использоватьstrftime() делать арифметику времени.Но strftime() не является частью C # или MySQL.Похоже, вы хотите узнать, сколько времени прошло между двумя значениями TIME, MAX(logtime) и MIN(logtime).

Вы хотите

  TIMEDIFF(MAX(logtime), MIN(logtime))

и отформатировать результат как 1:59 Вы хотите

  DATE_FORMAT(TIMEDIFF(MAX(logtime), MIN(logtime)), '%k:%i')

Pro tip : Добавьте эту страницу в закладки для строковых функций: https://dev.mysql.com/doc/refman/8.0/en/string-functions.html#function_concat

И добавьте эту страницу в закладки для функций даты / времени: https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html#function_date-format

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...