Ciężar krzyża długo ważę
Zanim dam do poniesienia.
Nim nagradzam, a nie karzę!
Wszak istotą jest zbawienia!
Praczuk
Składam wszystkim wesołych i pogodnych świąt Zmartwychwstania Chrystusa.
A w prezencie przesyłam funkcję w SQL, którą możecie sobie policzyć kiedy wypada Wielki Piątek:
CREATE FUNCTION dbo.Wielkanoc(@rok As Int)
/* SELECT
dbo.Wielkanoc(a.x + b.x) as Wielki_Piatek
FROM
(VALUES (0),(1),(2),(3),(4),(5),(6),(7),(8),(9)) as a(x)
CROSS JOIN
(VALUES (33),(1405),(2010),(2020),(2030)) as b(x)
ORDER BY
Wielki_Piatek
*/
RETURNS date
BEGIN
DECLARE @a int, @b int, @c int, @d int, @miesiac int, @dzien int
IF @rok < 32 --Wtedy nie było Wielkanocy!
SELECT
@dzien = 0,
@miesiac = 0
ELSE IF @rok between 33 and 1582 --Metoda Gaussa dla kalendarza juliańskiego
BEGIN
SET @a = (@rok % 19 * 19 + 15) % 30
SET @b = (@rok % 4 * 2 + @rok % 7 * 4 + 6 * @a + 6) % 7
IF @a + @b < 10
SELECT
@dzien = @a + @b + 22,
@miesiac = 3
ELSE
SELECT
@dzien = @a + @b - 9,
@miesiac = 4
END
ELSE --Metoda Meeusa/Jonesa/Butchera dla kalendarza gregoriańskiego
BEGIN
SET @a = (@rok % 19 * 19 + @rok / 100 - @rok / 100 / 4 - ((@rok / 100 - (@rok / 100 + 8) / 25 + 1) / 3) + 15) % 30
SET @b = (32 + @rok / 100 % 4 * 2 + @rok % 100 / 4 * 2 - @a - @rok % 100 % 4) % 7
SET @c = (@rok % 19 + 11 * @a + 22 * @b) / 451
SET @d = @a + @b - 7 * @c + 114
SET @dzien = @d % 31 + 1
SET @miesiac = @d / 31
END
RETURN dateadd(day,-2,DATEFROMPARTS(@rok, @miesiac, @dzien))
END
Grzegorz GPS Świderski
Tagi: gps65, Wielki Piątek
Bloger, żeglarz, informatyk, trajkkarz, sarmatolibertarianin, futurysta AI. Myślę, polemizuję, argumentuję, politykuję, filozofuję, łapówki przyjmuję: suppi.pl/gps65
Nowości od blogera
Inne tematy w dziale Technologie