Uskrs

Tuesday, 02.09.2008 – Zidar

Pronasao sam kod za izracunavanje Uskrsa, po pravoslavnom i po katolickom kalendaru. Izvor:

http://www.tek-tips.com/faqs.cfm?fid=5075

Pravoslavni:

CREATE FUNCTION dbo.OEaster (@Yr as int)
RETURNS datetime
AS 
-- SELECT dbo.OEaster(2007)
BEGIN
   Declare @I int, @J int, @Metonic int, @EMo int, @EDay int, @LeapAdj int
   Set @LeapAdj=@Yr/100-@Yr/400-2
   Set @Metonic=@Yr % 19
   Set @I=(19*@Metonic+15) % 30
   Set @J=(@Yr+@Yr/4+@I) % 7
   Set @EMo=3+(@I-@J+40)/44
   Set @EDay=@I-@J+28-31*(@EMo/4)
   Return DateAdd(dd,@LeapAdj,cast(str(@EMo)+'/'+str(@EDay)+'/'+str(@Yr) as datetime))
/*This algorithm is based upon work done by JM Oudin in 1940.*/
End
GO

Katolicki:

CREATE FUNCTION dbo.Easter (@Yr as int)
RETURNS datetime
AS 
BEGIN
   Declare @Cent int, @I int, @J int, @K int, @Metonic int, @EMo int, @EDay int
   Set @Cent=@Yr/100
   Set @Metonic=@Yr % 19
   Set @K=(@Cent-17)/25
   Set @I=(@Cent-@Cent/4-(@Cent-@K)/3+19*@Metonic+15) % 30
   Set @I=@I-(@I/28)*(1-(@I/28)*(29/(@I+1))*((21-@Metonic)/11))
   Set @J=(@Yr+@Yr/4+@I+2-@Cent+@Cent/4) % 7
   Set @EMo=3+(@I-@J+40)/44
   Set @EDay=@I-@J+28-31*(@EMo/4)
   Return cast(str(@EMo)+'/'+str(@EDay)+'/'+str(@Yr) as datetime)
/*This algorithm is from the work done by JM Oudin in 1940 and is accurate from year 1754 to 3400.*/
END
GO

Lep dodatak standardnom setu SQL funkcija za racunanje vremena.  🙂

Post a Comment