Как преобразовать "чч: мм: сс" в интервал для обновления sql - PullRequest
0 голосов
/ 08 мая 2020

У меня есть таблица в sql, где должно быть общее время, в течение которого каждый сотрудник работал в течение дня, и поскольку они могут покинуть офис во время рабочего времени, мне нужно подсчитать все время, которое они были в офисе.

это мой код (я упростил его, потому что он вырван из контекста):


create table hours_per_day
(
    id serial primary key,
    day timestamp,
    worked_hours timestamp, 
    id_employee integer references employees(id) ON DELETE SET NULL

);



тогда я получаю это:


System.out.println("Date of leave:    ");
String dat = br.readLine();

System.out.println("Time of leave:    ");
String time = br.readLine();



String tiime = dat + " " + time;

SimpleDateFormat format=new SimpleDateFormat("dd/MM/yyyy HH:mm:ss");
Date date=format.parse(tiime);
mainentry.setCheckOut(new java.sql.Timestamp(date.getTime()));


WorkedHoursPerDay odpr = new WorkedHoursPerDay();
SimpleDateFormat formatt=new SimpleDateFormat("dd/MM/yyyy");
Date dateee=formatt.parse(dat);
odpr.setDay(new java.sql.Timestamp(dateee.getTime()));

long dif = mainentry.getCheckOut().getTime() - z.getCheckIn().getTime();

        String hms = String.format("%02d:%02d:%02d", TimeUnit.MILLISECONDS.toHours(dif),
        TimeUnit.MILLISECONDS.toMinutes(dif) - TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS.toHours(dif)),
        TimeUnit.MILLISECONDS.toSeconds(dif) - TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(dif)));

        String nullls = "00:00:00";

        String beg = dat + " " + nullls;

        SimpleDateFormat form=new SimpleDateFormat("dd/MM/yyyy HH:mm:ss");
        Date dattee=form.parse(beg);
        odpr.setWorkedHours(new java.sql.Timestamp(dattee.getTime()));

odpr.insert();
odpr.update();


это мой код :


public void update() throws SQLException {
        if (idEmployee== null) {
            throw new IllegalStateException("id employee does not exist");
        }

        try (PreparedStatement s = DbContext.getConnection().prepareStatement("UPDATE hours_per_day SET worked_hours = worked_hours + ? WHERE id_employee = ? AND day = ?")) {

            s.setTimestamp(1, howManyHoursWorked)     
            s.setInt(2, idEmployee);
            s.setTimestamp(3, day);



            s.executeUpdate();
        }
    }  

но вот результат:

ERROR: invalid input syntax for type interval: "2019-01-01 04:00:00+01"

Я не знаю, как добавить эти отработанные часы к уже существующим часам в базе данных. Возможно, мне стоит изменить String time1 на interval, но я не знаю, как это сделать.

1 Ответ

0 голосов
/ 08 мая 2020

, если это SQL, вот как вы получите разницу во времени

declare @st1 datetime = '01/01/2019 00:00:00',  @st2 datetime = '01/01/2019 04:00:00'

Declare @TimeInOffice int
Select @TimeInOffice = DateDiff(hh,@st1, @st2)
Select @TimeInOffice

И, пожалуйста, посмотрите на следующую разницу часов в Java.

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