怎么将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使用数据创建对象的函数