Планирование задач и получение последней даты выполнения из Windows Task Scheduler для добавления в SQL между Query: FDA и: TDA - PullRequest
0 голосов
/ 02 февраля 2020

Я хочу отправлять отчет о зарегистрированных пользователях на сайте каждую неделю из таблицы пользователей в базе данных MySQL / Oracle. Для этого я создал Java программу, которая выбирает зарегистрированных пользователей в течение недели, сохраняет ее в файле Excel и отправляет по почте. Я планирую эту задачу с помощью Windows Task Scheduler для запуска каждую неделю. Я хочу получить время последнего запуска этого планировщика и время следующего добавления для добавления в sql запрос. Мой SQL запрос подобен приведенному ниже.

SELECT * FROM USERS WHERE TRUNC(USER_CREATION_DATE) BETWEEN 'FROMDATE' AND 'TODATE'; 

FROM_DATE & TO_DATE будут переменными.

Есть ли лучший способ получить FROM_DATE и TO_DATE, когда планировщик запускается каждую неделю сначала день, т.е. воскресенье, что означает, что я хочу, чтобы дата последнего воскресенья была FROM_DATE, а суббота - TO_DATE в Java.

. Вот мой код Java для создания файла Excel из SQL результата запроса

public class Write_to_excel_file_from_my_sql_database {
    public static void main(String[] args) throws InterruptedException, IOException {
        WritableWorkbook wworkbook;
        try {
            SimpleDateFormat formatter = new SimpleDateFormat("dd-mm-yyyy-HH-mm-ss");
            Date date = new Date();
            String unique = formatter.format(date);
            String uniqueFileName = "EXCEL" + "_" + unique + ".xls";
            String savePath = "XlsFiles";
            File fileSavePath = new File(savePath);
            if (!fileSavePath.exists() && !fileSavePath.isDirectory()) {
                fileSavePath.mkdir();
            }
            /* Generating unique filename */
            String destination = fileSavePath + File.separator + uniqueFileName;
            wworkbook = Workbook.createWorkbook(new File(destination));

            DBConnection_HR obj_DBConnection_LMC = new DBConnection_HR();
            Connection connection = obj_DBConnection_LMC.getConnection();
            PreparedStatement ps = null;
            ResultSet rs = null;
            String query = "select * from users where trunc(user_creation_date) between 'from_date' and 'to_date';";
            ps = connection.prepareStatement(query);
            rs = ps.executeQuery();
            ResultSetMetaData rsmd = rs.getMetaData();
            WritableSheet wsheet = wworkbook.createSheet("Users", 0);

            Label label = new Label(0, 0, "SR NO");
            wsheet.addCell(label);
            //int i = 0;
            int y = 1;         
            while (rs.next()) {
                for (int s = 1; s <= rsmd.getColumnCount(); s++) {
                    label = new Label(s, 0, rs.getMetaData().getColumnName(+s).toUpperCase());
                    wsheet.addCell(label);
                }
                for (int x = 1; x <= rsmd.getColumnCount(); x++) {
                    label = new Label(0, y, y + "");
                    wsheet.addCell(label);
                    label = new Label(x, y, rs.getString(+x));
                    wsheet.addCell(label);
                }
                y++;
            }
            wworkbook.write();
            wworkbook.close();
            System.out.println("fineshed");
            //Sending Mail
            SendAttachment.sendMail(destination);

        } catch (Exception e) {
            System.out.println(e);
        }
    }
}

Пожалуйста, помогите мне получить FROM_DATE и TO_DATE прошлой недели.

...