在MYSQL会话上设置时区

时间:2018-11-06 17:40:28

标签: mysql timezone set

在尝试从表中进行选择之前,我尝试使用以下“选择”语句设置会话时区。下面的代码在执行时给我以下异常:

“您的SQL语法有错误;请在与MySQL服务器版本相对应的手册中查找正确的语法,以在“选择IsActive,HID作为EmpNum,NameFirst,NameLast,FROM_UNIXTIME(timeIn)作为Ti附近”附近使用第1行”

以下是上下文中的Select语句:

private static List<EventLog> getTimeIPEventLog(String date) throws ClassNotFoundException, SQLException, IllegalAccessException, InstantiationException {
    final String sql =
            "SET time_zone='UTC'; Select IsActive, HID as EmpNum, NameFirst, NameLast, FROM_UNIXTIME(timeIn) as TimeIn, FROM_UNIXTIME(timeOut) as TimeOut, @@session.time_zone TimeZone, @@global.time_zone\n" +
                    "from eventLog el\n" +
                    "join users u\n" +
                    "on (u.usersID = el.usersID)\n" +
                    "where Date(FROM_UNIXTIME(timeIn)) = '" + date + "'\n" +
                    "order by timeIn desc";

    String url = MainApp.HRMSApplicationProperties.getProperty("timeIPJDBCString") + "?user=" + MainApp.timeIPCredentials.getKey() + "&password=" + MainApp.timeIPCredentials.getValue();
    Class.forName("com.mysql.jdbc.Driver").newInstance();
    Connection connection = DriverManager.getConnection(url + "&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC");

    Statement statement = connection.createStatement();
    ResultSet resultSet = statement.executeQuery(sql);
    List<EventLog> list = FXCollections.observableList(new ArrayList<>(0));
    while (resultSet.next()) {
        list.add(new EventLog(resultSet.getString("EmpNum"), resultSet.getString("NameFirst"), resultSet.getString("NameLast"), resultSet.getTimestamp("TimeIn"), resultSet.getTimestamp("TimeOut"), resultSet.getString("TimeZone")));
    }
    return list;
}

感谢您的帮助

0 个答案:

没有答案