怎么将Sql Server存储过程迁移到Java

来源:爱站网时间:2023-01-12编辑:网友分享
怎么将Sql Server存储过程迁移到Java,有兴趣了解这个问题的小伙伴一定要看看下面这篇文章,小编在此进行了详细说明,希望可以帮助到你们,并在从中获取知识。

问题描述


我正在将旧的报表系统迁移到现代Java代码库,偶然发现Microsoft Sql Server存储过程生成了带有日期(Year,Period,WeekStarting,WeekEnding)的表。我需要将此代码迁移到Java中并使其动态化,而不是生成一个表并占用DB中的空间。

向Sql Server专家寻求帮助以帮助我了解这些日期是如何得出的,尤其是Period列中的数字

USE [Reporting]
GO

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[GenDataforPeriodsTable]
    @enddate VARCHAR(10)
AS
    DECLARE @startdate VARCHAR(10)
BEGIN
    SET NOCOUNT ON; 

    SELECT @startdate = DATEADD(DAY, 1, MAX(WeekEnding)) FROM Periods;

    WITH CTE_DatesTable
    AS
    (
      SELECT CAST(@startdate as date) AS tempdate
      UNION ALL
      SELECT DATEADD(dd, 1, tempdate)
      FROM CTE_DatesTable
      WHERE DATEADD(dd, 1, tempdate) 

它生成这样的表:

 

思路:


Java 8代码:

import static java.time.DayOfWeek.SUNDAY;
import static java.time.temporal.TemporalAdjusters.nextOrSame;

import java.time.LocalDate;
static void genDataforPeriodsTable(LocalDate endDate) {
    String sql = "SELECT MAX(WeekEnding) FROM Periods";
    LocalDate maxWeekEnding = /* Result of running query */;
    genDataforPeriodsTable(maxWeekEnding.plusDays(1), endDate);
}

static void genDataforPeriodsTable(LocalDate startDate, LocalDate endDate) {
    System.out.println("Year Period WeekStarting WeekEnding");
    System.out.println("==== ====== ============ ==========");
    for (LocalDate tempdate = startDate.with(nextOrSame(SUNDAY));
                   tempdate.compareTo(endDate) 

Test

genDataforPeriodsTable(LocalDate.of(2019, 10, 25), LocalDate.of(2020, 5, 5));

输出

这里的输出与您包括的内容相反,但是数据相同,除了2020年第一周的开始日期错误为commented by Lothar。

Year Period WeekStarting WeekEnding
==== ====== ============ ==========
2019 10     2019-10-21   2019-10-27
2019 10     2019-10-28   2019-11-03
2019 11     2019-11-04   2019-11-10
2019 11     2019-11-11   2019-11-17
2019 11     2019-11-18   2019-11-24
2019 11     2019-11-25   2019-12-01
2019 12     2019-12-02   2019-12-08
2019 12     2019-12-09   2019-12-15
2019 12     2019-12-16   2019-12-22
2019 12     2019-12-23   2019-12-29
2020 1      2019-12-30   2020-01-05
2020 1      2020-01-06   2020-01-12
2020 1      2020-01-13   2020-01-19
2020 1      2020-01-20   2020-01-26
2020 1      2020-01-27   2020-02-02
2020 2      2020-02-03   2020-02-09
2020 2      2020-02-10   2020-02-16
2020 2      2020-02-17   2020-02-23
2020 2      2020-02-24   2020-03-01
2020 3      2020-03-02   2020-03-08
2020 3      2020-03-09   2020-03-15
2020 3      2020-03-16   2020-03-22
2020 3      2020-03-23   2020-03-29
2020 4      2020-03-30   2020-04-05
2020 4      2020-04-06   2020-04-12
2020 4      2020-04-13   2020-04-19
2020 4      2020-04-20   2020-04-26
2020 4      2020-04-27   2020-05-03

怎么将Sql Server存储过程迁移到Java这个问题的内容小编都给朋友们讲解完了,有需要小编进行解答的,欢迎咨询,本站点每天都会更新一批质量不错的技术文章给你们,希望你们学习后有收获。 

上一篇:Java编程中用户输入数组的方法

下一篇:Java使用数据创建对象的函数

您可能感兴趣的文章

相关阅读

热门软件源码

最新软件源码下载