Skip to content
Home » 음력 양력 변환 Sql | 엑셀 음력 양력 변환 하기(Lunartosolar 함수) 23675 좋은 평가 이 답변

음력 양력 변환 Sql | 엑셀 음력 양력 변환 하기(Lunartosolar 함수) 23675 좋은 평가 이 답변

당신은 주제를 찾고 있습니까 “음력 양력 변환 sql – 엑셀 음력 양력 변환 하기(LunarToSolar 함수)“? 다음 카테고리의 웹사이트 https://sk.taphoamini.com 에서 귀하의 모든 질문에 답변해 드립니다: https://sk.taphoamini.com/wiki/. 바로 아래에서 답을 찾을 수 있습니다. 작성자 Excel Master 이(가) 작성한 기사에는 조회수 5,874회 및 좋아요 22개 개의 좋아요가 있습니다.

음력 양력 변환 sql 주제에 대한 동영상 보기

여기에서 이 주제에 대한 비디오를 시청하십시오. 주의 깊게 살펴보고 읽고 있는 내용에 대한 피드백을 제공하세요!

d여기에서 엑셀 음력 양력 변환 하기(LunarToSolar 함수) – 음력 양력 변환 sql 주제에 대한 세부정보를 참조하세요

이용에 불편한 점이나 건의하실 것 있으면 알려주시기 바랍니다.
E-mail : [email protected]
블로그 : https://xlmaster.tistory.com

음력 양력 변환 sql 주제에 대한 자세한 내용은 여기를 참조하세요.

MSSQL 음력양력변환 테이블과 쿼리

MSSQL에 음력, 양력 데이터 등록시 변환을 하든 조회 시점에서 해당하는 레코드들을 조회하든 음력과 양력 사이에서 실시간 변환보단 매핑 테이블을 이용 …

+ 여기에 표시

Source: hippalus.tistory.com

Date Published: 10/23/2021

View: 841

음력 양력 변환 – DexCore.Net

음력 양력 변환. 탑~! 2016. 2. 26. 10:39 … LUNAR_DATE IS ‘양력’;. COMMENT ON COLUMN XXX.LunarToSolar. … USE Table : LUNARTOSOLAR : 양음력 매핑 Table.

+ 자세한 내용은 여기를 클릭하십시오

Source: dexcore.tistory.com

Date Published: 9/30/2021

View: 2303

양력음력변환 DB – My Space

우리가 많이 사용하는 1900년 부터 2200년 까지의 음력과 양력변환 테이블을 만들어 봤습니다. … –>MySQL 이지만 MS-SQL 에서도 사용가능합니다.

+ 여기에 더 보기

Source: juns0201.tistory.com

Date Published: 3/4/2021

View: 8333

[MS-SQL] 양력을 름력으로 변환 – SQL 자료실 – acc10

날짜를 입력받아 음력 <-> 양력간 변환 함수 입력조건 기준날짜, 양/음 구분, 평/윤달 구분. Ex) select fn_SolarLunar(`2004-02-29`, 1, 0)

+ 더 읽기

Source: m.cafe.daum.net

Date Published: 10/28/2022

View: 908

음력 양력 변환 Sql | 양력, 음력 날짜 찾아서 변환하기 (네이버 …

d여기에서 양력, 음력 날짜 찾아서 변환하기 (네이버 달력 활용) – 음력 양력 변환 sql 주제에 대한 세부정보를 참조하세요. 용도: 음력 생신이나 기제사 날짜 등 과거 …

+ 여기에 표시

Source: ppa.covadoc.vn

Date Published: 9/7/2022

View: 7607

양력음력변환 DB – 네이버 블로그

김민석입니다. 일반적으로 사용하는 양력음력변환 알고리즘에 문제점이 있는 걸로 알고 있습니다. 예를 들어 2006년에 한달정도 음력날짜가 하루씩 밀리는 …

+ 여기에 표시

Source: m.blog.naver.com

Date Published: 7/5/2022

View: 6124

[mysql] 양력음력변환 DB – SB리치패밀리

7. 7. 10:31. 양력음력변환 DB (MySQL). 여러 프로그래머분들께서 일반적으로 사용하는 양력음력변한 알고리즘에 문제점이 있는 걸로 알고 있습니다.

+ 여기에 보기

Source: sb.pe.kr

Date Published: 6/12/2022

View: 7250

음력을 양력으로 변환 계산 – superkts.com

쉽고 빠르고 간편하게 음력날짜를 양력날짜로 변환해 드립니다. 원하시는 음력날짜를 양력날짜로 변환해 보세요.

+ 여기에 표시

Source: superkts.com

Date Published: 12/20/2022

View: 4742

음력/양력/간지/공휴일 표시 MSQL DB 테이블 – 지니

PHPSCHOOL – DOWNLOAD 게시판의 669번 자료글(양력음력변환 DB)에서 다운받은 자료에 … MySQL 4.xxx euc-kr용 : g4_lunartosolar_mysql4.sql

+ 여기에 보기

Source: projin.tistory.com

Date Published: 10/29/2021

View: 8685

음력 ==> 양력변환 – 구루비

Oracle 노하우 및 팁. 음력 ==> 양력변환 4 10 11,678. by 문대훈 [2010.04.30 17:04:44] … ls_lYearDay VARCHAR2(500); –음력으로 윤달의 길이(29 OR 30)

+ 여기에 보기

Source: www.gurubee.net

Date Published: 9/27/2022

View: 2794

주제와 관련된 이미지 음력 양력 변환 sql

주제와 관련된 더 많은 사진을 참조하십시오 엑셀 음력 양력 변환 하기(LunarToSolar 함수). 댓글에서 더 많은 관련 이미지를 보거나 필요한 경우 더 많은 관련 기사를 볼 수 있습니다.

엑셀 음력 양력 변환 하기(LunarToSolar 함수)
엑셀 음력 양력 변환 하기(LunarToSolar 함수)

주제에 대한 기사 평가 음력 양력 변환 sql

  • Author: Excel Master
  • Views: 조회수 5,874회
  • Likes: 좋아요 22개
  • Date Published: 2019. 1. 16.
  • Video Url link: https://www.youtube.com/watch?v=IQfrZ-noIH0

음력 양력 변환

/*******************************************************************

* TABLE 생성

********************************************************************/

CREATE TABLE XXX.LUNAR_TO_SOLAR

(

LUNAR_DATE VARCHAR2(8) NOT NULL,

SOLAR_DATE VARCHAR2(8),

YUN CHAR(1),

GANJI VARCHAR2(8)

)

LOGGING

NOCOMPRESS

NOCACHE

NOPARALLEL

NOMONITORING;

COMMENT ON COLUMN XXX.LUNAR_TO_SOLAR.LUNAR_DATE IS ‘양력’;

COMMENT ON COLUMN XXX.LunarToSolar.SOLAR_DATE IS ‘음력’;

COMMENT ON COLUMN XXX.LunarToSolar.YUN IS ‘윤년’;

COMMENT ON COLUMN XXX.LunarToSolar.GANJI IS ‘간지’;

ALTER TABLE XXX.LUNAR_TO_SOLAR ADD (

CONSTRAINT LUNAR_TO_SOLAR_PK

PRIMARY KEY

(LUNAR_DATE));

/*******************************************************************

* FUNCTION 생성

********************************************************************/

CREATE OR REPLACE FUNCTION XXX.F_LUNAR_TO_SOLAR (

IN_DATE IN VARCHAR2,

IN_FLAG IN INT

)

RETURN VARCHAR2

IS

V_RESULT VARCHAR2(8);

/*******************************************************************

* TITLE : F_LUNAR_TO_SOLAR

* DESCRIPTION : 양음력 변환

* 작성자 : 까칠한 쑤

* 일 자 :

*

* USE Table : LUNARTOSOLAR : 양음력 매핑 Table

* 주요 코드 : IN_FLAG : 0 : 양력 ==> 음력

1 : 음력 ==> 양력

IN_DATE : 20040802 형식의 Date

* USE : SELECT F_LUNAR_TO_SOLAR(‘20041119’,0)

(양력 ==> 음력)

SELECT F_LUNAR_TO_SOLAR(‘20041119’,1)

(음력 ==> 양력)

— 날짜 형식이 틀리면 NULL 을 리턴한다..(DB에 Data 가 없으므로..)

********************************************************************/

BEGIN

— 양력 => 음력

IF IN_FLAG = 0 THEN

SELECT SOLAR_DATE

INTO V_RESULT

FROM LUNARTOSOLAR

WHERE LUNAR_DATE = IN_DATE;

— 음력 => 양력

ELSE

SELECT LUNAR_DATE

INTO V_RESULT

FROM LUNARTOSOLAR

WHERE SOLAR_DATE = IN_DATE;

END IF;

RETURN V_RESULT;

EXCEPTION

WHEN NO_DATA_FOUND THEN

NULL;

WHEN OTHERS THEN

— Consider logging the error and then re-raise

RAISE;

END F_LUNAR_TO_SOLAR;

LONAR_TO_SOLAR.txt

My Space :: 양력음력변환 DB

여러 프로그래머분들께서 일반적으로 사용하는 양력음력변한 알고리즘에

문제점이 있는 걸로 알고 있습니다. 예를 들어 2006년 1월 26일인가 확실치는 모르겠는데 한달정도 음력날짜가 하루씩 밀리는 경우도 있고

2046년까지인가 그때까지만 변환이 가능하죠….

그래서 자료를 여기저기 찾아본 결과

http://cgi.chollian.net/~kohyc/calendar/index.cgi 에서

어떤 분이 만드신 진짜만세력 0.93 델파이 버전을 이용해서

우리가 많이 사용하는 1900년 부터 2200년 까지의 음력과 양력변환 테이블을

만들어 봤습니다.

MySQL용으로 변환하였고 테이블 내에는

음력날짜, 양력날짜, 윤년여부, 해당날짜의 간지

등을 포함하였습니다.

일반적으로는 이정도의 자료만으로 충분하다고 생각됩니다.

저도 아직 사용을 안해봐서 어느정도의 변환속도가 나오는지는 잘 모르겠지만.

DB를 사용하면 그냥 연산하는것 보다는 빠를거라고 생각됩니다.

위 사이트에 있는 만세력이 지금껏 제가 봐왔던 것 어떤 것보다 정확한 음력날짜를

구해 주는 것 같아서 DB를 만들었고….

PHP로의 포팅은 연산속도 때문에 별 의미가 없는 것 같아서 DB로 처리하는 방법을

생각해 봤습니다.

여러분들께 도움이 될것 같고 이 방법에 대한 의견도 듣고 싶어서 공유를 생각해 봤습니다.

데이터 갯수는 정확하게 109938개입니다.

제 컴퓨터가 팬티엄 450인데….

한달 자료를 통채로 검색하는데도 0.00sec로 나오내요…

select * from LunarToSolar where solar_date >= ‘2200/10/01’ and solar_dat

e <= '2200/10/31'; 정말 대단한 MySQL입니다. -->MySQL 이지만 MS-SQL 에서도 사용가능합니다. 출처: http://www.phpschool.com/gnuboard4/bbs/tb.php/download/856

[MS-SQL] 양력을 름력으로 변환

/*날짜를 입력받아 음력 양력간 변환 함수입력조건 기준날짜, 양/음 구분, 평/윤달 구분Ex) select fn_SolarLunar(`2004-02-29`, 1, 0)양/음력 구분 -> 1 이면 양력, 1 이 아니면 음력으로 인식평/윤달 구분 -> 1 이면 윤달, 1 이 아니면 평달로 인식*/USE masterGOcreate function fn_SolarLunar(@Current_day VARCHAR(10),@SolarLunarFlag INT,@LeapMonthFlag INT)returns varchar(14)asbegin– 입력조건검색… 1901년 3월 1일과 2030년 12월 31일까지만 받고 그 외의 기간 입력시 NULL을 리턴if (LEFT(@current_day,4)<=1901 and SUBSTRING(@current_day,6,2)< 3) or LEFT(@current_day,4) > 2030return NULL– 변환 함수표declare @tempcalenda table (yyyy int, m1 tinyint, m2 tinyint, m3 tinyint, m4 tinyint, m5 tinyint, m6 tinyint,m7 tinyint, m8 tinyint, m9 tinyint, m10 tinyint, m11 tinyint, m12 tinyint, y_total int)insert into @tempcalenda values(1901, 1, 2, 1, 1, 2, 1, 2, 1, 2, 2, 2, 1, 354)insert into @tempcalenda values(1902, 2, 1, 2, 1, 1, 2, 1, 2, 1, 2, 2, 2, 355)insert into @tempcalenda values(1903, 1, 2, 1, 2, 3, 2, 1, 1, 2, 2, 1, 2, 383)insert into @tempcalenda values(1904, 2, 2, 1, 2, 1, 1, 2, 1, 1, 2, 2, 1, 354)insert into @tempcalenda values(1905, 2, 2, 1, 2, 2, 1, 1, 2, 1, 2, 1, 2, 355)insert into @tempcalenda values(1906, 1, 2, 2, 4, 1, 2, 1, 2, 1, 2, 1, 2, 384)insert into @tempcalenda values(1907, 1, 2, 1, 2, 1, 2, 2, 1, 2, 1, 2, 1, 354)insert into @tempcalenda values(1908, 2, 1, 1, 2, 2, 1, 2, 1, 2, 2, 1, 2, 355)insert into @tempcalenda values(1909, 1, 5, 1, 2, 1, 2, 1, 2, 2, 2, 1, 2, 384)insert into @tempcalenda values(1910, 1, 2, 1, 1, 2, 1, 2, 1, 2, 2, 2, 1, 354)insert into @tempcalenda values(1911, 2, 1, 2, 1, 1, 5, 1, 2, 2, 1, 2, 2, 384)insert into @tempcalenda values(1912, 2, 1, 2, 1, 1, 2, 1, 1, 2, 2, 1, 2, 354)insert into @tempcalenda values(1913, 2, 2, 1, 2, 1, 1, 2, 1, 1, 2, 1, 2, 354)insert into @tempcalenda values(1914, 2, 2, 1, 2, 5, 1, 2, 1, 2, 1, 1, 2, 384)insert into @tempcalenda values(1915, 2, 1, 2, 2, 1, 2, 1, 2, 1, 2, 1, 2, 355)insert into @tempcalenda values(1916, 1, 2, 1, 2, 1, 2, 2, 1, 2, 1, 2, 1, 354)insert into @tempcalenda values(1917, 2, 3, 2, 1, 2, 2, 1, 2, 2, 1, 2, 1, 384)insert into @tempcalenda values(1918, 2, 1, 1, 2, 1, 2, 1, 2, 2, 2, 1, 2, 355)insert into @tempcalenda values(1919, 1, 2, 1, 1, 2, 1, 5, 2, 2, 1, 2, 2, 384)insert into @tempcalenda values(1920, 1, 2, 1, 1, 2, 1, 1, 2, 2, 1, 2, 2, 354)insert into @tempcalenda values(1921, 2, 1, 2, 1, 1, 2, 1, 1, 2, 1, 2, 2, 354)insert into @tempcalenda values(1922, 2, 1, 2, 2, 3, 2, 1, 1, 2, 1, 2, 2, 384)insert into @tempcalenda values(1923, 1, 2, 2, 1, 2, 1, 2, 1, 2, 1, 1, 2, 354)insert into @tempcalenda values(1924, 2, 1, 2, 1, 2, 2, 1, 2, 1, 2, 1, 1, 354)insert into @tempcalenda values(1925, 2, 1, 2, 5, 2, 1, 2, 2, 1, 2, 1, 2, 385)insert into @tempcalenda values(1926, 1, 1, 2, 1, 2, 1, 2, 2, 1, 2, 2, 1, 354)insert into @tempcalenda values(1927, 2, 1, 1, 2, 1, 2, 1, 2, 2, 1, 2, 2, 355)insert into @tempcalenda values(1928, 1, 5, 1, 2, 1, 1, 2, 2, 1, 2, 2, 2, 384)insert into @tempcalenda values(1929, 1, 2, 1, 1, 2, 1, 1, 2, 1, 2, 2, 2, 354)insert into @tempcalenda values(1930, 1, 2, 2, 1, 1, 5, 1, 2, 1, 2, 2, 1, 383)insert into @tempcalenda values(1931, 2, 2, 2, 1, 1, 2, 1, 1, 2, 1, 2, 1, 354)insert into @tempcalenda values(1932, 2, 2, 2, 1, 2, 1, 2, 1, 1, 2, 1, 2, 355)insert into @tempcalenda values(1933, 1, 2, 2, 1, 6, 1, 2, 1, 2, 1, 1, 2, 384)insert into @tempcalenda values(1934, 1, 2, 1, 2, 2, 1, 2, 2, 1, 2, 1, 2, 355)insert into @tempcalenda values(1935, 1, 1, 2, 1, 2, 1, 2, 2, 1, 2, 2, 1, 354)insert into @tempcalenda values(1936, 2, 1, 4, 1, 2, 1, 2, 1, 2, 2, 2, 1, 384)insert into @tempcalenda values(1937, 2, 1, 1, 2, 1, 1, 2, 1, 2, 2, 2, 1, 354)insert into @tempcalenda values(1938, 2, 2, 1, 1, 2, 1, 4, 1, 2, 2, 1, 2, 384)insert into @tempcalenda values(1939, 2, 2, 1, 1, 2, 1, 1, 2, 1, 2, 1, 2, 354)insert into @tempcalenda values(1940, 2, 2, 1, 2, 1, 2, 1, 1, 2, 1, 2, 1, 354)insert into @tempcalenda values(1941, 2, 2, 1, 2, 2, 4, 1, 1, 2, 1, 2, 1, 384)insert into @tempcalenda values(1942, 2, 1, 2, 2, 1, 2, 2, 1, 2, 1, 1, 2, 355)insert into @tempcalenda values(1943, 1, 2, 1, 2, 1, 2, 2, 1, 2, 2, 1, 2, 355)insert into @tempcalenda values(1944, 1, 1, 2, 4, 1, 2, 1, 2, 2, 1, 2, 2, 384)insert into @tempcalenda values(1945, 1, 1, 2, 1, 1, 2, 1, 2, 2, 2, 1, 2, 354)insert into @tempcalenda values(1946, 2, 1, 1, 2, 1, 1, 2, 1, 2, 2, 1, 2, 354)insert into @tempcalenda values(1947, 2, 5, 1, 2, 1, 1, 2, 1, 2, 1, 2, 2, 384)insert into @tempcalenda values(1948, 2, 1, 2, 1, 2, 1, 1, 2, 1, 2, 1, 2, 354)insert into @tempcalenda values(1949, 2, 2, 1, 2, 1, 2, 3, 2, 1, 2, 1, 2, 384)insert into @tempcalenda values(1950, 2, 1, 2, 2, 1, 2, 1, 1, 2, 1, 2, 1, 354)insert into @tempcalenda values(1951, 2, 1, 2, 2, 1, 2, 1, 2, 1, 2, 1, 2, 355)insert into @tempcalenda values(1952, 1, 2, 1, 2, 4, 2, 1, 2, 1, 2, 1, 2, 384)insert into @tempcalenda values(1953, 1, 2, 1, 1, 2, 2, 1, 2, 2, 1, 2, 2, 355)insert into @tempcalenda values(1954, 1, 1, 2, 1, 1, 2, 1, 2, 2, 1, 2, 2, 354)insert into @tempcalenda values(1955, 2, 1, 4, 1, 1, 2, 1, 2, 1, 2, 2, 2, 384)insert into @tempcalenda values(1956, 1, 2, 1, 2, 1, 1, 2, 1, 2, 1, 2, 2, 354)insert into @tempcalenda values(1957, 2, 1, 2, 1, 2, 1, 1, 5, 2, 1, 2, 2, 384)insert into @tempcalenda values(1958, 1, 2, 2, 1, 2, 1, 1, 2, 1, 2, 1, 2, 354)insert into @tempcalenda values(1959, 1, 2, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 354)insert into @tempcalenda values(1960, 2, 1, 2, 1, 2, 5, 2, 1, 2, 1, 2, 1, 384)insert into @tempcalenda values(1961, 2, 1, 2, 1, 2, 1, 2, 2, 1, 2, 1, 2, 355)insert into @tempcalenda values(1962, 1, 2, 1, 1, 2, 1, 2, 2, 1, 2, 2, 1, 354)insert into @tempcalenda values(1963, 2, 1, 2, 3, 2, 1, 2, 1, 2, 2, 2, 1, 384)insert into @tempcalenda values(1964, 2, 1, 2, 1, 1, 2, 1, 2, 1, 2, 2, 2, 355)insert into @tempcalenda values(1965, 1, 2, 1, 2, 1, 1, 2, 1, 1, 2, 2, 1, 353)insert into @tempcalenda values(1966, 2, 2, 5, 2, 1, 1, 2, 1, 1, 2, 2, 1, 384)insert into @tempcalenda values(1967, 2, 2, 1, 2, 2, 1, 1, 2, 1, 2, 1, 2, 355)insert into @tempcalenda values(1968, 1, 2, 2, 1, 2, 1, 5, 2, 1, 2, 1, 2, 384)insert into @tempcalenda values(1969, 1, 2, 1, 2, 1, 2, 2, 1, 2, 1, 2, 1, 354)insert into @tempcalenda values(1970, 2, 1, 1, 2, 2, 1, 2, 1, 2, 2, 1, 2, 355)insert into @tempcalenda values(1971, 1, 2, 1, 1, 5, 2, 1, 2, 2, 2, 1, 2, 384)insert into @tempcalenda values(1972, 1, 2, 1, 1, 2, 1, 2, 1, 2, 2, 2, 1, 354)insert into @tempcalenda values(1973, 2, 1, 2, 1, 1, 2, 1, 1, 2, 2, 2, 1, 354)insert into @tempcalenda values(1974, 2, 2, 1, 5, 1, 2, 1, 1, 2, 2, 1, 2, 384)insert into @tempcalenda values(1975, 2, 2, 1, 2, 1, 1, 2, 1, 1, 2, 1, 2, 354)insert into @tempcalenda values(1976, 2, 2, 1, 2, 1, 2, 1, 5, 2, 1, 1, 2, 384)insert into @tempcalenda values(1977, 2, 1, 2, 2, 1, 2, 1, 2, 1, 2, 1, 1, 354)insert into @tempcalenda values(1978, 2, 2, 1, 2, 1, 2, 2, 1, 2, 1, 2, 1, 355)insert into @tempcalenda values(1979, 2, 1, 1, 2, 1, 6, 1, 2, 2, 1, 2, 1, 384)insert into @tempcalenda values(1980, 2, 1, 1, 2, 1, 2, 1, 2, 2, 1, 2, 2, 355)insert into @tempcalenda values(1981, 1, 2, 1, 1, 2, 1, 1, 2, 2, 1, 2, 2, 354)insert into @tempcalenda values(1982, 2, 1, 2, 3, 2, 1, 1, 2, 2, 1, 2, 2, 384)insert into @tempcalenda values(1983, 2, 1, 2, 1, 1, 2, 1, 1, 2, 1, 2, 2, 354)insert into @tempcalenda values(1984, 2, 1, 2, 2, 1, 1, 2, 1, 1, 5, 2, 2, 384)insert into @tempcalenda values(1985, 1, 2, 2, 1, 2, 1, 2, 1, 1, 2, 1, 2, 354)insert into @tempcalenda values(1986, 1, 2, 2, 1, 2, 2, 1, 2, 1, 2, 1, 1, 354)insert into @tempcalenda values(1987, 2, 1, 2, 2, 1, 5, 2, 2, 1, 2, 1, 2, 385)insert into @tempcalenda values(1988, 1, 1, 2, 1, 2, 1, 2, 2, 1, 2, 2, 1, 354)insert into @tempcalenda values(1989, 2, 1, 1, 2, 1, 2, 1, 2, 2, 1, 2, 2, 355)insert into @tempcalenda values(1990, 1, 2, 1, 1, 5, 1, 2, 1, 2, 2, 2, 2, 384)insert into @tempcalenda values(1991, 1, 2, 1, 1, 2, 1, 1, 2, 1, 2, 2, 2, 354)insert into @tempcalenda values(1992, 1, 2, 2, 1, 1, 2, 1, 1, 2, 1, 2, 2, 354)insert into @tempcalenda values(1993, 1, 2, 5, 2, 1, 2, 1, 1, 2, 1, 2, 1, 383)insert into @tempcalenda values(1994, 2, 2, 2, 1, 2, 1, 2, 1, 1, 2, 1, 2, 355)insert into @tempcalenda values(1995, 1, 2, 2, 1, 2, 2, 1, 5, 2, 1, 1, 2, 384)insert into @tempcalenda values(1996, 1, 2, 1, 2, 2, 1, 2, 1, 2, 2, 1, 2, 355)insert into @tempcalenda values(1997, 1, 1, 2, 1, 2, 1, 2, 2, 1, 2, 2, 1, 354)insert into @tempcalenda values(1998, 2, 1, 1, 2, 3, 2, 2, 1, 2, 2, 2, 1, 384)insert into @tempcalenda values(1999, 2, 1, 1, 2, 1, 1, 2, 1, 2, 2, 2, 1, 354)insert into @tempcalenda values(2000, 2, 2, 1, 1, 2, 1, 1, 2, 1, 2, 2, 1, 354)insert into @tempcalenda values(2001, 2, 2, 2, 3, 2, 1, 1, 2, 1, 2, 1, 2, 384)insert into @tempcalenda values(2002, 2, 2, 1, 2, 1, 2, 1, 1, 2, 1, 2, 1, 354)insert into @tempcalenda values(2003, 2, 2, 1, 2, 2, 1, 2, 1, 1, 2, 1, 2, 355)insert into @tempcalenda values(2004, 1, 5, 2, 2, 1, 2, 1, 2, 2, 1, 1, 2, 384)insert into @tempcalenda values(2005, 1, 2, 1, 2, 1, 2, 2, 1, 2, 2, 1, 2, 354)insert into @tempcalenda values(2006, 1, 1, 2, 1, 2, 1, 5, 2, 2, 1, 2, 2, 385)insert into @tempcalenda values(2007, 1, 1, 2, 1, 1, 2, 1, 2, 2, 2, 1, 2, 354)insert into @tempcalenda values(2008, 2, 1, 1, 2, 1, 1, 2, 1, 2, 2, 1, 2, 354)insert into @tempcalenda values(2009, 2, 2, 1, 1, 5, 1, 2, 1, 2, 1, 2, 2, 384)insert into @tempcalenda values(2010, 2, 1, 2, 1, 2, 1, 1, 2, 1, 2, 1, 2, 354)insert into @tempcalenda values(2011, 2, 1, 2, 2, 1, 2, 1, 1, 2, 1, 2, 1, 354)insert into @tempcalenda values(2012, 2, 1, 6, 2, 1, 2, 1, 1, 2, 1, 2, 1, 384)insert into @tempcalenda values(2013, 2, 1, 2, 2, 1, 2, 1, 2, 1, 2, 1, 2, 355)insert into @tempcalenda values(2014, 1, 2, 1, 2, 1, 2, 1, 2, 5, 2, 1, 2, 384)insert into @tempcalenda values(2015, 1, 2, 1, 1, 2, 1, 2, 2, 2, 1, 2, 2, 354)insert into @tempcalenda values(2016, 1, 1, 2, 1, 1, 2, 1, 2, 2, 1, 2, 2, 355)insert into @tempcalenda values(2017, 2, 1, 1, 2, 3, 2, 1, 2, 1, 2, 2, 2, 384)insert into @tempcalenda values(2018, 1, 2, 1, 2, 1, 1, 2, 1, 2, 1, 2, 2, 354)insert into @tempcalenda values(2019, 2, 1, 2, 1, 2, 1, 1, 2, 1, 2, 1, 2, 354)insert into @tempcalenda values(2020, 2, 1, 2, 5, 2, 1, 1, 2, 1, 2, 1, 2, 384)insert into @tempcalenda values(2021, 1, 2, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 354)insert into @tempcalenda values(2022, 2, 1, 2, 1, 2, 2, 1, 2, 1, 2, 1, 2, 355)insert into @tempcalenda values(2023, 1, 5, 2, 1, 2, 1, 2, 2, 1, 2, 1, 2, 384)insert into @tempcalenda values(2024, 1, 2, 1, 1, 2, 1, 2, 2, 1, 2, 2, 1, 354)insert into @tempcalenda values(2025, 2, 1, 2, 1, 1, 5, 2, 1, 2, 2, 2, 1, 384)insert into @tempcalenda values(2026, 2, 1, 2, 1, 1, 2, 1, 2, 1, 2, 2, 2, 355)insert into @tempcalenda values(2027, 1, 2, 1, 2, 1, 1, 2, 1, 1, 2, 2, 2, 354)insert into @tempcalenda values(2028, 1, 2, 2, 1, 5, 1, 2, 1, 1, 2, 2, 1, 384)insert into @tempcalenda values(2029, 2, 2, 1, 2, 2, 1, 1, 2, 1, 1, 2, 2, 354)insert into @tempcalenda values(2030, 1, 2, 1, 2, 2, 1, 2, 1, 2, 1, 2, 1, 355)– 월별 일수 합계declare @tempMT table (IDX int, VAL int)insert into @tempMT values( 1, 31)insert into @tempMT values( 2, 59)insert into @tempMT values( 3, 90)insert into @tempMT values( 4,120)insert into @tempMT values( 5,151)insert into @tempMT values( 6,181)insert into @tempMT values( 7,212)insert into @tempMT values( 8,243)insert into @tempMT values( 9,273)insert into @tempMT values(10,304)insert into @tempMT values(11,334)insert into @tempMT values(12,365)– 1 -> 29일짜리 달을 말함– 2 -> 30일짜리 달을 말함– 3 -> 29일짜리 달이고 그 뒤 29일짜리 윤달이 있음을 말함– 4 -> 29일짜리 달이고 그 뒤 30일짜리 윤달이 있음을 말함– 5 -> 30일짜리 달이고 그 뒤 29일짜리 윤달이 있음을 말함– 6 -> 30일짜리 달이고 그 뒤 30일짜리 윤달이 있음을 말함declare @tempVM table (IDX int, VAL int)insert into @tempVM values(1,29)insert into @tempVM values(2,30)insert into @tempVM values(3,29+29)insert into @tempVM values(4,29+30)insert into @tempVM values(5,30+29)insert into @tempVM values(6,30+30)– 변수 선언DECLARE @T INT, — 계산일@Y1 INT,@Y2 INT,@SY INT, — 결과년@SW INT,@SM INT, — 결과월@SD INT — 결과일SET @SY = LEFT(@Current_day, 4)SET @SM = SUBSTRING(@Current_day,6,2)SET @SD = RIGHT(@Current_day,2)– 양력 / 음력 변환 구분IF @SolarLunarFlag = 1 — 양력BEGIN– 음력을 입력받은 경우 유효성 체크IF @SD > DAY(DATEADD(DAY, -1, DATEADD(M, 1, LEFT(@Current_day, 8) + `01`)))RETURN `날짜입력오류`SET @Y1 = @SY – 1900SET @T = 365 * (@Y1 – 1) +(SELECT VALFROM @tempMTWHERE IDX = @SM – 1) +@SD + (@Y1 / 4)IF @SY = 4 * (@Y1 / 4) AND 30 * @SM + @SD < 90SET @T = @T - 1SET @T = @T - 49SET @SY = 1While (@T > (SELECT Y_TOTAL FROM @tempcalenda WHERE YYYY = @SY + 1900))BEGINSET @T = @T – (SELECT Y_TOTAL FROM @tempcalenda WHERE YYYY = @SY + 1900)SET @SY = @SY + 1ENDSET @SM = 1While (@T > (SELECT VALFROM @tempVMWHERE IDX = (SELECT CASE @SM WHEN 1 THEN M1 WHEN 2 THEN M2 WHEN 3 THEN M3 WHEN 4 THEN M4WHEN 5 THEN M5 WHEN 6 THEN M6 WHEN 7 THEN M7 WHEN 8 THEN M8WHEN 9 THEN M9 WHEN 10 THEN M10 WHEN 11 THEN M11 ELSE M12 ENDFROM @tempcalendaWHERE YYYY = @SY + 1900))BEGINSET @T = @T – (SELECT VALFROM @tempVMWHERE IDX = (SELECT CASE @SM WHEN 1 THEN M1 WHEN 2 THEN M2 WHEN 3 THEN M3 WHEN 4 THEN M4WHEN 5 THEN M5 WHEN 6 THEN M6 WHEN 7 THEN M7 WHEN 8 THEN M8WHEN 9 THEN M9 WHEN 10 THEN M10 WHEN 11 THEN M11 ELSE M12 ENDFROM @tempcalendaWHERE YYYY = @SY + 1900))SET @SM = @SM + 1ENDSET @SY = @SY + 1900SET @SD = @TIF ((SELECT CASE @SM WHEN 1 THEN M1 WHEN 2 THEN M2 WHEN 3 THEN M3 WHEN 4 THEN M4WHEN 5 THEN M5 WHEN 6 THEN M6 WHEN 7 THEN M7 WHEN 8 THEN M8WHEN 9 THEN M9 WHEN 10 THEN M10 WHEN 11 THEN M11 ELSE M12 ENDFROM @tempcalendaWHERE YYYY = @SY) = 3 OR(SELECT CASE @SM WHEN 1 THEN M1 WHEN 2 THEN M2 WHEN 3 THEN M3 WHEN 4 THEN M4WHEN 5 THEN M5 WHEN 6 THEN M6 WHEN 7 THEN M7 WHEN 8 THEN M8WHEN 9 THEN M9 WHEN 10 THEN M10 WHEN 11 THEN M11 ELSE M12 ENDFROM @tempcalendaWHERE YYYY = @SY) = 4) AND @T > 29BEGINSET @SD = @T – 29return RIGHT(`000`+CAST(@SY AS VARCHAR(4)),4) + `-` + RIGHT(`0`+CAST(@SM AS VARCHAR(2)),2) + `-` + RIGHT(`0`+CAST(@SD AS VARCHAR(2)),2) + `(윤)`ENDELSE IF ((SELECT CASE @SM WHEN 1 THEN M1 WHEN 2 THEN M2 WHEN 3 THEN M3 WHEN 4 THEN M4WHEN 5 THEN M5 WHEN 6 THEN M6 WHEN 7 THEN M7 WHEN 8 THEN M8WHEN 9 THEN M9 WHEN 10 THEN M10 WHEN 11 THEN M11 ELSE M12 ENDFROM @tempcalendaWHERE YYYY = @SY) = 5 OR(SELECT CASE @SM WHEN 1 THEN M1 WHEN 2 THEN M2 WHEN 3 THEN M3 WHEN 4 THEN M4WHEN 5 THEN M5 WHEN 6 THEN M6 WHEN 7 THEN M7 WHEN 8 THEN M8WHEN 9 THEN M9 WHEN 10 THEN M10 WHEN 11 THEN M11 ELSE M12 ENDFROM @tempcalendaWHERE YYYY = @SY) = 6) AND @T > 30BEGINSET @SD = @T – 30return RIGHT(`000`+CAST(@SY AS VARCHAR(4)),4) + `-` + RIGHT(`0`+CAST(@SM AS VARCHAR(2)),2) + `-` + RIGHT(`0`+CAST(@SD AS VARCHAR(2)),2) + `(윤)`ENDELSEreturn RIGHT(`000`+CAST(@SY AS VARCHAR(4)),4) + `-` + RIGHT(`0`+CAST(@SM AS VARCHAR(2)),2) + `-` + RIGHT(`0`+CAST(@SD AS VARCHAR(2)),2)ENDELSE — 음력BEGINSELECT @T = SUM(Y_TOTAL) + @SD + 49FROM @tempcalendaWHERE YYYY < @SYSELECT @T = @T +CASE WHEN 1 < @SM THEN (SELECT VAL FROM @tempVM WHERE IDX = M1) ELSE 0 END +CASE WHEN 2 < @SM THEN (SELECT VAL FROM @tempVM WHERE IDX = M2) ELSE 0 END +CASE WHEN 3 < @SM THEN (SELECT VAL FROM @tempVM WHERE IDX = M3) ELSE 0 END +CASE WHEN 4 < @SM THEN (SELECT VAL FROM @tempVM WHERE IDX = M4) ELSE 0 END +CASE WHEN 5 < @SM THEN (SELECT VAL FROM @tempVM WHERE IDX = M5) ELSE 0 END +CASE WHEN 6 < @SM THEN (SELECT VAL FROM @tempVM WHERE IDX = M6) ELSE 0 END +CASE WHEN 7 < @SM THEN (SELECT VAL FROM @tempVM WHERE IDX = M7) ELSE 0 END +CASE WHEN 8 < @SM THEN (SELECT VAL FROM @tempVM WHERE IDX = M8) ELSE 0 END +CASE WHEN 9 < @SM THEN (SELECT VAL FROM @tempVM WHERE IDX = M9) ELSE 0 END +CASE WHEN 10 < @SM THEN (SELECT VAL FROM @tempVM WHERE IDX = M10) ELSE 0 END +CASE WHEN 11 < @SM THEN (SELECT VAL FROM @tempVM WHERE IDX = M11) ELSE 0 END +CASE WHEN 12 < @SM THEN (SELECT VAL FROM @tempVM WHERE IDX = M12) ELSE 0 ENDFROM @tempcalendaWHERE YYYY = @SY-- 윤달/평달을 구분한다.IF @LeapMonthFlag = 1 AND (SELECT CASE @SM WHEN 1 THEN M1 WHEN 2 THEN M2 WHEN 3 THEN M3 WHEN 4 THEN M4WHEN 5 THEN M5 WHEN 6 THEN M6 WHEN 7 THEN M7 WHEN 8 THEN M8WHEN 9 THEN M9 WHEN 10 THEN M10 WHEN 11 THEN M11 ELSE M12 ENDFROM @tempcalendaWHERE YYYY = @SY) < 3--return NULLSET @LeapMonthFlag = 0IF @LeapMonthFlag = 1BEGINIF (SELECT CASE @SM WHEN 1 THEN M1 WHEN 2 THEN M2 WHEN 3 THEN M3 WHEN 4 THEN M4WHEN 5 THEN M5 WHEN 6 THEN M6 WHEN 7 THEN M7 WHEN 8 THEN M8WHEN 9 THEN M9 WHEN 10 THEN M10 WHEN 11 THEN M11 ELSE M12 ENDFROM @tempcalendaWHERE YYYY = @SY) = 3 OR(SELECT CASE @SM WHEN 1 THEN M1 WHEN 2 THEN M2 WHEN 3 THEN M3 WHEN 4 THEN M4WHEN 5 THEN M5 WHEN 6 THEN M6 WHEN 7 THEN M7 WHEN 8 THEN M8WHEN 9 THEN M9 WHEN 10 THEN M10 WHEN 11 THEN M11 ELSE M12 ENDFROM @tempcalendaWHERE YYYY = @SY) = 4SET @T = @T + 29ELSESET @T = @T + 30ENDSET @Y1 = ROUND(@T / 1461, 0) -- 4년을 일수로 구하면 (356 + 365 + 365 + 366 = 1461)SET @T = @T - 1461 * @Y1SET @Y2 = ROUND(@T / 365, 0)SET @T = @T - 365 * @Y2SET @SY = 4 * @Y1 + @Y2 + 1If @SY = 4 * ROUND(@SY / 4, 0) AND @T > 59SET @SW = 1ElseSET @SW = 0SET @SY = @SY + 1900SET @SM = 1 — 5While (@T > (SELECT VALFROM @tempMTWHERE IDX = @SM) + @SW)SET @SM = @SM + 1SET @SD = @T – (SELECT VALFROM @tempMTWHERE IDX = @SM – 1) – @SWIF @SY = 4 * ROUND(@SY / 4, 0) And @T = 60SET @SD = 29RETURN RIGHT(`000`+CAST(@SY AS VARCHAR(4)),4) + `-` + RIGHT(`0`+CAST(@SM AS VARCHAR(2)),2) + `-` + RIGHT(`0`+CAST(@SD AS VARCHAR(2)),2)ENDRETURN `NULL`ENDGOEXEC sp_changeobjectowner `fn_SolarLunar`, `system_function_schema`GO

음력 양력 변환 Sql | 양력, 음력 날짜 찾아서 변환하기 (네이버 달력 활용) 인기 답변 업데이트

당신은 주제를 찾고 있습니까 “음력 양력 변환 sql – 양력, 음력 날짜 찾아서 변환하기 (네이버 달력 활용)“? 다음 카테고리의 웹사이트 ppa.covadoc.vn 에서 귀하의 모든 질문에 답변해 드립니다: ppa.covadoc.vn/blog. 바로 아래에서 답을 찾을 수 있습니다. 작성자 ᄋᄌ 이(가) 작성한 기사에는 조회수 2,617회 및 좋아요 85개 개의 좋아요가 있습니다.

여기에서 이 주제에 대한 비디오를 시청하십시오. 주의 깊게 살펴보고 읽고 있는 내용에 대한 피드백을 제공하세요!

용도: 음력 생신이나 기제사 날짜 등 과거의 음력날짜만 알때 올해의 날짜로 찾기

영상: 휴대전화 화면촬영한거라, 모바일 전체화면 정도로 보면 화질이 딱 맞을듯.

예시: 양력 1970.08.15 의 음력 날짜가 2021년 양력으로 언제인지 알아보았다.

순서:

ㄱ. 과거의 양력 날짜만 알때 시작.

0:00 네이버에서 달력 기능이 나오도록 한다. (음력 버튼 미리 눌러도 된다.)

0:04 당시의 양력 날짜로 이동한다. 그래서 원본 음력날짜를 찾는 것이다.

0:11 변환하려는 양력날짜의 음력 월일 값을 정확하게 외운다. (예시에선 음력 7.14)

ㄴ. 올해/미래의 해당 음력날짜를 찾으러 간다. 정확한 음력 날짜 월일를 안다면, 여기서부터 시작하라.

0:25 (음력 버튼을 눌러두고) 찾으려는 년도에서, 외웠던 음력 월일값과 일치하는 날짜를 찾는다.

MSSQL에 음력, 양력 데이터 등록시 변환을 하든 조회 시점에서 해당하는 레코드들을 조회하든 음력과 양력 사이에서 실시간 변환보단 매핑 테이블을 이용 …

+ 여기에 표시

Source: hippalus.tistory.com

Date Published: 6/13/2021

View: 9141

음력 양력 변환. 탑~! 2016. 2. 26. 10:39 … LUNAR_DATE IS ‘양력’;. COMMENT ON COLUMN XXX.LunarToSolar. … USE Table : LUNARTOSOLAR : 양음력 매핑 Table.

+ 더 읽기

Source: dexcore.tistory.com

Date Published: 6/28/2021

View: 1199

우리가 많이 사용하는 1900년 부터 2200년 까지의 음력과 양력변환 테이블을 만들어 봤습니다. … –>MySQL 이지만 MS-SQL 에서도 사용가능합니다.

+ 더 읽기

Source: juns0201.tistory.com

Date Published: 5/12/2022

View: 3079

Aug 1, 2018 — MSSQL에 음력, 양력 데이터 등록시 변환을 하든 조회 시점에서 해당하는 … Source: MSSQL 음력양력변환 테이블과 쿼리.

+ 더 읽기

Source: ko.taphoamini.com

Date Published: 12/4/2021

View: 6393

날짜를 입력받아 음력 양력간 변환 함수 입력조건 기준날짜, 양/음 구분, 평/윤달 구분. Ex) select fn_SolarLunar(`2004-02-29`, 1, 0)

+ 더 읽기

Source: m.cafe.daum.net

Date Published: 4/22/2021

View: 2677

Aug 1, 2018 — MSSQL에 음력, 양력 데이터 등록시 변환을 하든 조회 시점에서 해당하는 레코드들을 조회하든 음력과 양력 사이에서 실시간 변환보단 …

+ 더 읽기

Source: quangsilic.com

Date Published: 2/22/2021

View: 485

김민석입니다. 일반적으로 사용하는 양력음력변환 알고리즘에 문제점이 있는 걸로 알고 있습니다. 예를 들어 2006년에 한달정도 음력날짜가 하루씩 밀리는 …

+ 여기에 보기

Source: m.blog.naver.com

Date Published: 8/26/2021

View: 1699

쉽고 빠르고 간편하게 음력날짜를 양력날짜로 변환해 드립니다. 원하시는 음력날짜를 양력날짜로 변환해 보세요.

+ 여기에 표시

Source: superkts.com

Date Published: 5/3/2022

View: 6145

Oracle 노하우 및 팁. 음력 ==> 양력변환 4 10 11,597. by 문대훈 [2010.04.30 17:04:44] … ls_lYearDay VARCHAR2(500); –음력으로 윤달의 길이(29 OR 30)

+ 여기에 더 보기

Source: www.gurubee.net

Date Published: 5/17/2022

View: 7541

여러군데 나온 적 있는 .NET CLR을 사용한 음력/양력 달력 만들기를 간단하게 설명하고자 합니다. 1. 새 프로젝트로 데이터베이스의 SQL CLR 프로젝트로 …

+ 여기에 표시

Source: windtrap.tistory.com

Date Published: 3/12/2022

View: 3658

주제와 관련된 더 많은 사진을 참조하십시오 양력, 음력 날짜 찾아서 변환하기 (네이버 달력 활용). 댓글에서 더 많은 관련 이미지를 보거나 필요한 경우 더 많은 관련 기사를 볼 수 있습니다.

/*날짜를 입력받아 음력 양력간 변환 함수입력조건 기준날짜, 양/음 구분, 평/윤달 구분Ex) select fn_SolarLunar(`2004-02-29`, 1, 0)양/음력 구분 -> 1 이면 양력, 1 이 아니면 음력으로 인식평/윤달 구분 -> 1 이면 윤달, 1 이 아니면 평달로 인식*/USE masterGOcreate function fn_SolarLunar(@Current_day VARCHAR(10),@SolarLunarFlag INT,@LeapMonthFlag INT)returns varchar(14)asbegin– 입력조건검색… 1901년 3월 1일과 2030년 12월 31일까지만 받고 그 외의 기간 입력시 NULL을 리턴if (LEFT(@current_day,4)<=1901 and SUBSTRING(@current_day,6,2)< 3) or LEFT(@current_day,4) > 2030return NULL– 변환 함수표declare @tempcalenda table (yyyy int, m1 tinyint, m2 tinyint, m3 tinyint, m4 tinyint, m5 tinyint, m6 tinyint,m7 tinyint, m8 tinyint, m9 tinyint, m10 tinyint, m11 tinyint, m12 tinyint, y_total int)insert into @tempcalenda values(1901, 1, 2, 1, 1, 2, 1, 2, 1, 2, 2, 2, 1, 354)insert into @tempcalenda values(1902, 2, 1, 2, 1, 1, 2, 1, 2, 1, 2, 2, 2, 355)insert into @tempcalenda values(1903, 1, 2, 1, 2, 3, 2, 1, 1, 2, 2, 1, 2, 383)insert into @tempcalenda values(1904, 2, 2, 1, 2, 1, 1, 2, 1, 1, 2, 2, 1, 354)insert into @tempcalenda values(1905, 2, 2, 1, 2, 2, 1, 1, 2, 1, 2, 1, 2, 355)insert into @tempcalenda values(1906, 1, 2, 2, 4, 1, 2, 1, 2, 1, 2, 1, 2, 384)insert into @tempcalenda values(1907, 1, 2, 1, 2, 1, 2, 2, 1, 2, 1, 2, 1, 354)insert into @tempcalenda values(1908, 2, 1, 1, 2, 2, 1, 2, 1, 2, 2, 1, 2, 355)insert into @tempcalenda values(1909, 1, 5, 1, 2, 1, 2, 1, 2, 2, 2, 1, 2, 384)insert into @tempcalenda values(1910, 1, 2, 1, 1, 2, 1, 2, 1, 2, 2, 2, 1, 354)insert into @tempcalenda values(1911, 2, 1, 2, 1, 1, 5, 1, 2, 2, 1, 2, 2, 384)insert into @tempcalenda values(1912, 2, 1, 2, 1, 1, 2, 1, 1, 2, 2, 1, 2, 354)insert into @tempcalenda values(1913, 2, 2, 1, 2, 1, 1, 2, 1, 1, 2, 1, 2, 354)insert into @tempcalenda values(1914, 2, 2, 1, 2, 5, 1, 2, 1, 2, 1, 1, 2, 384)insert into @tempcalenda values(1915, 2, 1, 2, 2, 1, 2, 1, 2, 1, 2, 1, 2, 355)insert into @tempcalenda values(1916, 1, 2, 1, 2, 1, 2, 2, 1, 2, 1, 2, 1, 354)insert into @tempcalenda values(1917, 2, 3, 2, 1, 2, 2, 1, 2, 2, 1, 2, 1, 384)insert into @tempcalenda values(1918, 2, 1, 1, 2, 1, 2, 1, 2, 2, 2, 1, 2, 355)insert into @tempcalenda values(1919, 1, 2, 1, 1, 2, 1, 5, 2, 2, 1, 2, 2, 384)insert into @tempcalenda values(1920, 1, 2, 1, 1, 2, 1, 1, 2, 2, 1, 2, 2, 354)insert into @tempcalenda values(1921, 2, 1, 2, 1, 1, 2, 1, 1, 2, 1, 2, 2, 354)insert into @tempcalenda values(1922, 2, 1, 2, 2, 3, 2, 1, 1, 2, 1, 2, 2, 384)insert into @tempcalenda values(1923, 1, 2, 2, 1, 2, 1, 2, 1, 2, 1, 1, 2, 354)insert into @tempcalenda values(1924, 2, 1, 2, 1, 2, 2, 1, 2, 1, 2, 1, 1, 354)insert into @tempcalenda values(1925, 2, 1, 2, 5, 2, 1, 2, 2, 1, 2, 1, 2, 385)insert into @tempcalenda values(1926, 1, 1, 2, 1, 2, 1, 2, 2, 1, 2, 2, 1, 354)insert into @tempcalenda values(1927, 2, 1, 1, 2, 1, 2, 1, 2, 2, 1, 2, 2, 355)insert into @tempcalenda values(1928, 1, 5, 1, 2, 1, 1, 2, 2, 1, 2, 2, 2, 384)insert into @tempcalenda values(1929, 1, 2, 1, 1, 2, 1, 1, 2, 1, 2, 2, 2, 354)insert into @tempcalenda values(1930, 1, 2, 2, 1, 1, 5, 1, 2, 1, 2, 2, 1, 383)insert into @tempcalenda values(1931, 2, 2, 2, 1, 1, 2, 1, 1, 2, 1, 2, 1, 354)insert into @tempcalenda values(1932, 2, 2, 2, 1, 2, 1, 2, 1, 1, 2, 1, 2, 355)insert into @tempcalenda values(1933, 1, 2, 2, 1, 6, 1, 2, 1, 2, 1, 1, 2, 384)insert into @tempcalenda values(1934, 1, 2, 1, 2, 2, 1, 2, 2, 1, 2, 1, 2, 355)insert into @tempcalenda values(1935, 1, 1, 2, 1, 2, 1, 2, 2, 1, 2, 2, 1, 354)insert into @tempcalenda values(1936, 2, 1, 4, 1, 2, 1, 2, 1, 2, 2, 2, 1, 384)insert into @tempcalenda values(1937, 2, 1, 1, 2, 1, 1, 2, 1, 2, 2, 2, 1, 354)insert into @tempcalenda values(1938, 2, 2, 1, 1, 2, 1, 4, 1, 2, 2, 1, 2, 384)insert into @tempcalenda values(1939, 2, 2, 1, 1, 2, 1, 1, 2, 1, 2, 1, 2, 354)insert into @tempcalenda values(1940, 2, 2, 1, 2, 1, 2, 1, 1, 2, 1, 2, 1, 354)insert into @tempcalenda values(1941, 2, 2, 1, 2, 2, 4, 1, 1, 2, 1, 2, 1, 384)insert into @tempcalenda values(1942, 2, 1, 2, 2, 1, 2, 2, 1, 2, 1, 1, 2, 355)insert into @tempcalenda values(1943, 1, 2, 1, 2, 1, 2, 2, 1, 2, 2, 1, 2, 355)insert into @tempcalenda values(1944, 1, 1, 2, 4, 1, 2, 1, 2, 2, 1, 2, 2, 384)insert into @tempcalenda values(1945, 1, 1, 2, 1, 1, 2, 1, 2, 2, 2, 1, 2, 354)insert into @tempcalenda values(1946, 2, 1, 1, 2, 1, 1, 2, 1, 2, 2, 1, 2, 354)insert into @tempcalenda values(1947, 2, 5, 1, 2, 1, 1, 2, 1, 2, 1, 2, 2, 384)insert into @tempcalenda values(1948, 2, 1, 2, 1, 2, 1, 1, 2, 1, 2, 1, 2, 354)insert into @tempcalenda values(1949, 2, 2, 1, 2, 1, 2, 3, 2, 1, 2, 1, 2, 384)insert into @tempcalenda values(1950, 2, 1, 2, 2, 1, 2, 1, 1, 2, 1, 2, 1, 354)insert into @tempcalenda values(1951, 2, 1, 2, 2, 1, 2, 1, 2, 1, 2, 1, 2, 355)insert into @tempcalenda values(1952, 1, 2, 1, 2, 4, 2, 1, 2, 1, 2, 1, 2, 384)insert into @tempcalenda values(1953, 1, 2, 1, 1, 2, 2, 1, 2, 2, 1, 2, 2, 355)insert into @tempcalenda values(1954, 1, 1, 2, 1, 1, 2, 1, 2, 2, 1, 2, 2, 354)insert into @tempcalenda values(1955, 2, 1, 4, 1, 1, 2, 1, 2, 1, 2, 2, 2, 384)insert into @tempcalenda values(1956, 1, 2, 1, 2, 1, 1, 2, 1, 2, 1, 2, 2, 354)insert into @tempcalenda values(1957, 2, 1, 2, 1, 2, 1, 1, 5, 2, 1, 2, 2, 384)insert into @tempcalenda values(1958, 1, 2, 2, 1, 2, 1, 1, 2, 1, 2, 1, 2, 354)insert into @tempcalenda values(1959, 1, 2, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 354)insert into @tempcalenda values(1960, 2, 1, 2, 1, 2, 5, 2, 1, 2, 1, 2, 1, 384)insert into @tempcalenda values(1961, 2, 1, 2, 1, 2, 1, 2, 2, 1, 2, 1, 2, 355)insert into @tempcalenda values(1962, 1, 2, 1, 1, 2, 1, 2, 2, 1, 2, 2, 1, 354)insert into @tempcalenda values(1963, 2, 1, 2, 3, 2, 1, 2, 1, 2, 2, 2, 1, 384)insert into @tempcalenda values(1964, 2, 1, 2, 1, 1, 2, 1, 2, 1, 2, 2, 2, 355)insert into @tempcalenda values(1965, 1, 2, 1, 2, 1, 1, 2, 1, 1, 2, 2, 1, 353)insert into @tempcalenda values(1966, 2, 2, 5, 2, 1, 1, 2, 1, 1, 2, 2, 1, 384)insert into @tempcalenda values(1967, 2, 2, 1, 2, 2, 1, 1, 2, 1, 2, 1, 2, 355)insert into @tempcalenda values(1968, 1, 2, 2, 1, 2, 1, 5, 2, 1, 2, 1, 2, 384)insert into @tempcalenda values(1969, 1, 2, 1, 2, 1, 2, 2, 1, 2, 1, 2, 1, 354)insert into @tempcalenda values(1970, 2, 1, 1, 2, 2, 1, 2, 1, 2, 2, 1, 2, 355)insert into @tempcalenda values(1971, 1, 2, 1, 1, 5, 2, 1, 2, 2, 2, 1, 2, 384)insert into @tempcalenda values(1972, 1, 2, 1, 1, 2, 1, 2, 1, 2, 2, 2, 1, 354)insert into @tempcalenda values(1973, 2, 1, 2, 1, 1, 2, 1, 1, 2, 2, 2, 1, 354)insert into @tempcalenda values(1974, 2, 2, 1, 5, 1, 2, 1, 1, 2, 2, 1, 2, 384)insert into @tempcalenda values(1975, 2, 2, 1, 2, 1, 1, 2, 1, 1, 2, 1, 2, 354)insert into @tempcalenda values(1976, 2, 2, 1, 2, 1, 2, 1, 5, 2, 1, 1, 2, 384)insert into @tempcalenda values(1977, 2, 1, 2, 2, 1, 2, 1, 2, 1, 2, 1, 1, 354)insert into @tempcalenda values(1978, 2, 2, 1, 2, 1, 2, 2, 1, 2, 1, 2, 1, 355)insert into @tempcalenda values(1979, 2, 1, 1, 2, 1, 6, 1, 2, 2, 1, 2, 1, 384)insert into @tempcalenda values(1980, 2, 1, 1, 2, 1, 2, 1, 2, 2, 1, 2, 2, 355)insert into @tempcalenda values(1981, 1, 2, 1, 1, 2, 1, 1, 2, 2, 1, 2, 2, 354)insert into @tempcalenda values(1982, 2, 1, 2, 3, 2, 1, 1, 2, 2, 1, 2, 2, 384)insert into @tempcalenda values(1983, 2, 1, 2, 1, 1, 2, 1, 1, 2, 1, 2, 2, 354)insert into @tempcalenda values(1984, 2, 1, 2, 2, 1, 1, 2, 1, 1, 5, 2, 2, 384)insert into @tempcalenda values(1985, 1, 2, 2, 1, 2, 1, 2, 1, 1, 2, 1, 2, 354)insert into @tempcalenda values(1986, 1, 2, 2, 1, 2, 2, 1, 2, 1, 2, 1, 1, 354)insert into @tempcalenda values(1987, 2, 1, 2, 2, 1, 5, 2, 2, 1, 2, 1, 2, 385)insert into @tempcalenda values(1988, 1, 1, 2, 1, 2, 1, 2, 2, 1, 2, 2, 1, 354)insert into @tempcalenda values(1989, 2, 1, 1, 2, 1, 2, 1, 2, 2, 1, 2, 2, 355)insert into @tempcalenda values(1990, 1, 2, 1, 1, 5, 1, 2, 1, 2, 2, 2, 2, 384)insert into @tempcalenda values(1991, 1, 2, 1, 1, 2, 1, 1, 2, 1, 2, 2, 2, 354)insert into @tempcalenda values(1992, 1, 2, 2, 1, 1, 2, 1, 1, 2, 1, 2, 2, 354)insert into @tempcalenda values(1993, 1, 2, 5, 2, 1, 2, 1, 1, 2, 1, 2, 1, 383)insert into @tempcalenda values(1994, 2, 2, 2, 1, 2, 1, 2, 1, 1, 2, 1, 2, 355)insert into @tempcalenda values(1995, 1, 2, 2, 1, 2, 2, 1, 5, 2, 1, 1, 2, 384)insert into @tempcalenda values(1996, 1, 2, 1, 2, 2, 1, 2, 1, 2, 2, 1, 2, 355)insert into @tempcalenda values(1997, 1, 1, 2, 1, 2, 1, 2, 2, 1, 2, 2, 1, 354)insert into @tempcalenda values(1998, 2, 1, 1, 2, 3, 2, 2, 1, 2, 2, 2, 1, 384)insert into @tempcalenda values(1999, 2, 1, 1, 2, 1, 1, 2, 1, 2, 2, 2, 1, 354)insert into @tempcalenda values(2000, 2, 2, 1, 1, 2, 1, 1, 2, 1, 2, 2, 1, 354)insert into @tempcalenda values(2001, 2, 2, 2, 3, 2, 1, 1, 2, 1, 2, 1, 2, 384)insert into @tempcalenda values(2002, 2, 2, 1, 2, 1, 2, 1, 1, 2, 1, 2, 1, 354)insert into @tempcalenda values(2003, 2, 2, 1, 2, 2, 1, 2, 1, 1, 2, 1, 2, 355)insert into @tempcalenda values(2004, 1, 5, 2, 2, 1, 2, 1, 2, 2, 1, 1, 2, 384)insert into @tempcalenda values(2005, 1, 2, 1, 2, 1, 2, 2, 1, 2, 2, 1, 2, 354)insert into @tempcalenda values(2006, 1, 1, 2, 1, 2, 1, 5, 2, 2, 1, 2, 2, 385)insert into @tempcalenda values(2007, 1, 1, 2, 1, 1, 2, 1, 2, 2, 2, 1, 2, 354)insert into @tempcalenda values(2008, 2, 1, 1, 2, 1, 1, 2, 1, 2, 2, 1, 2, 354)insert into @tempcalenda values(2009, 2, 2, 1, 1, 5, 1, 2, 1, 2, 1, 2, 2, 384)insert into @tempcalenda values(2010, 2, 1, 2, 1, 2, 1, 1, 2, 1, 2, 1, 2, 354)insert into @tempcalenda values(2011, 2, 1, 2, 2, 1, 2, 1, 1, 2, 1, 2, 1, 354)insert into @tempcalenda values(2012, 2, 1, 6, 2, 1, 2, 1, 1, 2, 1, 2, 1, 384)insert into @tempcalenda values(2013, 2, 1, 2, 2, 1, 2, 1, 2, 1, 2, 1, 2, 355)insert into @tempcalenda values(2014, 1, 2, 1, 2, 1, 2, 1, 2, 5, 2, 1, 2, 384)insert into @tempcalenda values(2015, 1, 2, 1, 1, 2, 1, 2, 2, 2, 1, 2, 2, 354)insert into @tempcalenda values(2016, 1, 1, 2, 1, 1, 2, 1, 2, 2, 1, 2, 2, 355)insert into @tempcalenda values(2017, 2, 1, 1, 2, 3, 2, 1, 2, 1, 2, 2, 2, 384)insert into @tempcalenda values(2018, 1, 2, 1, 2, 1, 1, 2, 1, 2, 1, 2, 2, 354)insert into @tempcalenda values(2019, 2, 1, 2, 1, 2, 1, 1, 2, 1, 2, 1, 2, 354)insert into @tempcalenda values(2020, 2, 1, 2, 5, 2, 1, 1, 2, 1, 2, 1, 2, 384)insert into @tempcalenda values(2021, 1, 2, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 354)insert into @tempcalenda values(2022, 2, 1, 2, 1, 2, 2, 1, 2, 1, 2, 1, 2, 355)insert into @tempcalenda values(2023, 1, 5, 2, 1, 2, 1, 2, 2, 1, 2, 1, 2, 384)insert into @tempcalenda values(2024, 1, 2, 1, 1, 2, 1, 2, 2, 1, 2, 2, 1, 354)insert into @tempcalenda values(2025, 2, 1, 2, 1, 1, 5, 2, 1, 2, 2, 2, 1, 384)insert into @tempcalenda values(2026, 2, 1, 2, 1, 1, 2, 1, 2, 1, 2, 2, 2, 355)insert into @tempcalenda values(2027, 1, 2, 1, 2, 1, 1, 2, 1, 1, 2, 2, 2, 354)insert into @tempcalenda values(2028, 1, 2, 2, 1, 5, 1, 2, 1, 1, 2, 2, 1, 384)insert into @tempcalenda values(2029, 2, 2, 1, 2, 2, 1, 1, 2, 1, 1, 2, 2, 354)insert into @tempcalenda values(2030, 1, 2, 1, 2, 2, 1, 2, 1, 2, 1, 2, 1, 355)– 월별 일수 합계declare @tempMT table (IDX int, VAL int)insert into @tempMT values( 1, 31)insert into @tempMT values( 2, 59)insert into @tempMT values( 3, 90)insert into @tempMT values( 4,120)insert into @tempMT values( 5,151)insert into @tempMT values( 6,181)insert into @tempMT values( 7,212)insert into @tempMT values( 8,243)insert into @tempMT values( 9,273)insert into @tempMT values(10,304)insert into @tempMT values(11,334)insert into @tempMT values(12,365)– 1 -> 29일짜리 달을 말함– 2 -> 30일짜리 달을 말함– 3 -> 29일짜리 달이고 그 뒤 29일짜리 윤달이 있음을 말함– 4 -> 29일짜리 달이고 그 뒤 30일짜리 윤달이 있음을 말함– 5 -> 30일짜리 달이고 그 뒤 29일짜리 윤달이 있음을 말함– 6 -> 30일짜리 달이고 그 뒤 30일짜리 윤달이 있음을 말함declare @tempVM table (IDX int, VAL int)insert into @tempVM values(1,29)insert into @tempVM values(2,30)insert into @tempVM values(3,29+29)insert into @tempVM values(4,29+30)insert into @tempVM values(5,30+29)insert into @tempVM values(6,30+30)– 변수 선언DECLARE @T INT, — 계산일@Y1 INT,@Y2 INT,@SY INT, — 결과년@SW INT,@SM INT, — 결과월@SD INT — 결과일SET @SY = LEFT(@Current_day, 4)SET @SM = SUBSTRING(@Current_day,6,2)SET @SD = RIGHT(@Current_day,2)– 양력 / 음력 변환 구분IF @SolarLunarFlag = 1 — 양력BEGIN– 음력을 입력받은 경우 유효성 체크IF @SD > DAY(DATEADD(DAY, -1, DATEADD(M, 1, LEFT(@Current_day, 8) + `01`)))RETURN `날짜입력오류`SET @Y1 = @SY – 1900SET @T = 365 * (@Y1 – 1) +(SELECT VALFROM @tempMTWHERE IDX = @SM – 1) +@SD + (@Y1 / 4)IF @SY = 4 * (@Y1 / 4) AND 30 * @SM + @SD < 90SET @T = @T - 1SET @T = @T - 49SET @SY = 1While (@T > (SELECT Y_TOTAL FROM @tempcalenda WHERE YYYY = @SY + 1900))BEGINSET @T = @T – (SELECT Y_TOTAL FROM @tempcalenda WHERE YYYY = @SY + 1900)SET @SY = @SY + 1ENDSET @SM = 1While (@T > (SELECT VALFROM @tempVMWHERE IDX = (SELECT CASE @SM WHEN 1 THEN M1 WHEN 2 THEN M2 WHEN 3 THEN M3 WHEN 4 THEN M4WHEN 5 THEN M5 WHEN 6 THEN M6 WHEN 7 THEN M7 WHEN 8 THEN M8WHEN 9 THEN M9 WHEN 10 THEN M10 WHEN 11 THEN M11 ELSE M12 ENDFROM @tempcalendaWHERE YYYY = @SY + 1900))BEGINSET @T = @T – (SELECT VALFROM @tempVMWHERE IDX = (SELECT CASE @SM WHEN 1 THEN M1 WHEN 2 THEN M2 WHEN 3 THEN M3 WHEN 4 THEN M4WHEN 5 THEN M5 WHEN 6 THEN M6 WHEN 7 THEN M7 WHEN 8 THEN M8WHEN 9 THEN M9 WHEN 10 THEN M10 WHEN 11 THEN M11 ELSE M12 ENDFROM @tempcalendaWHERE YYYY = @SY + 1900))SET @SM = @SM + 1ENDSET @SY = @SY + 1900SET @SD = @TIF ((SELECT CASE @SM WHEN 1 THEN M1 WHEN 2 THEN M2 WHEN 3 THEN M3 WHEN 4 THEN M4WHEN 5 THEN M5 WHEN 6 THEN M6 WHEN 7 THEN M7 WHEN 8 THEN M8WHEN 9 THEN M9 WHEN 10 THEN M10 WHEN 11 THEN M11 ELSE M12 ENDFROM @tempcalendaWHERE YYYY = @SY) = 3 OR(SELECT CASE @SM WHEN 1 THEN M1 WHEN 2 THEN M2 WHEN 3 THEN M3 WHEN 4 THEN M4WHEN 5 THEN M5 WHEN 6 THEN M6 WHEN 7 THEN M7 WHEN 8 THEN M8WHEN 9 THEN M9 WHEN 10 THEN M10 WHEN 11 THEN M11 ELSE M12 ENDFROM @tempcalendaWHERE YYYY = @SY) = 4) AND @T > 29BEGINSET @SD = @T – 29return RIGHT(`000`+CAST(@SY AS VARCHAR(4)),4) + `-` + RIGHT(`0`+CAST(@SM AS VARCHAR(2)),2) + `-` + RIGHT(`0`+CAST(@SD AS VARCHAR(2)),2) + `(윤)`ENDELSE IF ((SELECT CASE @SM WHEN 1 THEN M1 WHEN 2 THEN M2 WHEN 3 THEN M3 WHEN 4 THEN M4WHEN 5 THEN M5 WHEN 6 THEN M6 WHEN 7 THEN M7 WHEN 8 THEN M8WHEN 9 THEN M9 WHEN 10 THEN M10 WHEN 11 THEN M11 ELSE M12 ENDFROM @tempcalendaWHERE YYYY = @SY) = 5 OR(SELECT CASE @SM WHEN 1 THEN M1 WHEN 2 THEN M2 WHEN 3 THEN M3 WHEN 4 THEN M4WHEN 5 THEN M5 WHEN 6 THEN M6 WHEN 7 THEN M7 WHEN 8 THEN M8WHEN 9 THEN M9 WHEN 10 THEN M10 WHEN 11 THEN M11 ELSE M12 ENDFROM @tempcalendaWHERE YYYY = @SY) = 6) AND @T > 30BEGINSET @SD = @T – 30return RIGHT(`000`+CAST(@SY AS VARCHAR(4)),4) + `-` + RIGHT(`0`+CAST(@SM AS VARCHAR(2)),2) + `-` + RIGHT(`0`+CAST(@SD AS VARCHAR(2)),2) + `(윤)`ENDELSEreturn RIGHT(`000`+CAST(@SY AS VARCHAR(4)),4) + `-` + RIGHT(`0`+CAST(@SM AS VARCHAR(2)),2) + `-` + RIGHT(`0`+CAST(@SD AS VARCHAR(2)),2)ENDELSE — 음력BEGINSELECT @T = SUM(Y_TOTAL) + @SD + 49FROM @tempcalendaWHERE YYYY < @SYSELECT @T = @T +CASE WHEN 1 < @SM THEN (SELECT VAL FROM @tempVM WHERE IDX = M1) ELSE 0 END +CASE WHEN 2 < @SM THEN (SELECT VAL FROM @tempVM WHERE IDX = M2) ELSE 0 END +CASE WHEN 3 < @SM THEN (SELECT VAL FROM @tempVM WHERE IDX = M3) ELSE 0 END +CASE WHEN 4 < @SM THEN (SELECT VAL FROM @tempVM WHERE IDX = M4) ELSE 0 END +CASE WHEN 5 < @SM THEN (SELECT VAL FROM @tempVM WHERE IDX = M5) ELSE 0 END +CASE WHEN 6 < @SM THEN (SELECT VAL FROM @tempVM WHERE IDX = M6) ELSE 0 END +CASE WHEN 7 < @SM THEN (SELECT VAL FROM @tempVM WHERE IDX = M7) ELSE 0 END +CASE WHEN 8 < @SM THEN (SELECT VAL FROM @tempVM WHERE IDX = M8) ELSE 0 END +CASE WHEN 9 < @SM THEN (SELECT VAL FROM @tempVM WHERE IDX = M9) ELSE 0 END +CASE WHEN 10 < @SM THEN (SELECT VAL FROM @tempVM WHERE IDX = M10) ELSE 0 END +CASE WHEN 11 < @SM THEN (SELECT VAL FROM @tempVM WHERE IDX = M11) ELSE 0 END +CASE WHEN 12 < @SM THEN (SELECT VAL FROM @tempVM WHERE IDX = M12) ELSE 0 ENDFROM @tempcalendaWHERE YYYY = @SY-- 윤달/평달을 구분한다.IF @LeapMonthFlag = 1 AND (SELECT CASE @SM WHEN 1 THEN M1 WHEN 2 THEN M2 WHEN 3 THEN M3 WHEN 4 THEN M4WHEN 5 THEN M5 WHEN 6 THEN M6 WHEN 7 THEN M7 WHEN 8 THEN M8WHEN 9 THEN M9 WHEN 10 THEN M10 WHEN 11 THEN M11 ELSE M12 ENDFROM @tempcalendaWHERE YYYY = @SY) < 3--return NULLSET @LeapMonthFlag = 0IF @LeapMonthFlag = 1BEGINIF (SELECT CASE @SM WHEN 1 THEN M1 WHEN 2 THEN M2 WHEN 3 THEN M3 WHEN 4 THEN M4WHEN 5 THEN M5 WHEN 6 THEN M6 WHEN 7 THEN M7 WHEN 8 THEN M8WHEN 9 THEN M9 WHEN 10 THEN M10 WHEN 11 THEN M11 ELSE M12 ENDFROM @tempcalendaWHERE YYYY = @SY) = 3 OR(SELECT CASE @SM WHEN 1 THEN M1 WHEN 2 THEN M2 WHEN 3 THEN M3 WHEN 4 THEN M4WHEN 5 THEN M5 WHEN 6 THEN M6 WHEN 7 THEN M7 WHEN 8 THEN M8WHEN 9 THEN M9 WHEN 10 THEN M10 WHEN 11 THEN M11 ELSE M12 ENDFROM @tempcalendaWHERE YYYY = @SY) = 4SET @T = @T + 29ELSESET @T = @T + 30ENDSET @Y1 = ROUND(@T / 1461, 0) -- 4년을 일수로 구하면 (356 + 365 + 365 + 366 = 1461)SET @T = @T - 1461 * @Y1SET @Y2 = ROUND(@T / 365, 0)SET @T = @T - 365 * @Y2SET @SY = 4 * @Y1 + @Y2 + 1If @SY = 4 * ROUND(@SY / 4, 0) AND @T > 59SET @SW = 1ElseSET @SW = 0SET @SY = @SY + 1900SET @SM = 1 — 5While (@T > (SELECT VALFROM @tempMTWHERE IDX = @SM) + @SW)SET @SM = @SM + 1SET @SD = @T – (SELECT VALFROM @tempMTWHERE IDX = @SM – 1) – @SWIF @SY = 4 * ROUND(@SY / 4, 0) And @T = 60SET @SD = 29RETURN RIGHT(`000`+CAST(@SY AS VARCHAR(4)),4) + `-` + RIGHT(`0`+CAST(@SM AS VARCHAR(2)),2) + `-` + RIGHT(`0`+CAST(@SD AS VARCHAR(2)),2)ENDRETURN `NULL`ENDGOEXEC sp_changeobjectowner `fn_SolarLunar`, `system_function_schema`GO

양력음력변환 DB

안녕하세요. 김민석입니다.

일반적으로 사용하는 양력음력변환 알고리즘에 문제점이 있는 걸로 알고 있습니다.

예를 들어 2006년에 한달정도 음력날짜가 하루씩 밀리는 경우도 있고 2046년까지만 변환이 가능하다고 하네요.

한국역법홈페이지 – http://cgi.chollian.net/~kohyc/calendar/index.cgi 의

진짜만세력 0.93 델파이버전을 이용해서 어떤분이 만든신 양력음력변환 DB입니다.

보통 많이 사용하는 1900년 부터 2200년까지의 음력과 양력변환 날짜, 윤년여부, 해당날짜의 간지가 포함되었고 MSSQL 버전으로 변환했습니다.

저의 생각으로도 양력음력변환 연산속도보다는 DB처리가 나은것 같구요.

개인적으로 시간이 나질 않아 예전에 사용하던 양력음력변환DB 만 올립니다.

나중에 콜드퓨젼으로 양력음력변환 소스 작업해 다시 올릴께요.

글면 이만 ^^*

[mysql] 양력음력변환 DB

양력음력변환 DB (MySQL)

여러 프로그래머분들께서 일반적으로 사용하는 양력음력변한 알고리즘에문제점이 있는 걸로 알고 있습니다.예를 들어 2006년 1월 26일인가 확실치는 모르겠는데한달정도 음력날짜가 하루씩 밀리는 경우도 있고2046년까지인가 그때까지만 변환이 가능하죠….그래서 자료를 여기저기 찾아본 결과http://cgi.chollian.net/~kohyc/calendar/index.cgi 에서어떤 분이 만드신 진짜만세력 0.93 델파이 버전을 이용해서우리가 많이 사용하는 1900년 부터 2200년 까지의 음력과 양력변환 테이블을만들어 봤습니다.MySQL용으로 변환하였고 테이블 내에는음력날짜, 양력날짜, 윤년여부, 해당날짜의 간지등을 포함하였습니다.일반적으로는 이정도의 자료만으로 충분하다고 생각됩니다.저도 아직 사용을 안해봐서 어느정도의 변환속도가 나오는지는 잘 모르겠지만.DB를 사용하면 그냥 연산하는것 보다는 빠를거라고 생각됩니다.위 사이트에 있는 만세력이 지금껏 제가 봐왔던 것 어떤 것보다 정확한 음력날짜를구해 주는 것 같아서 DB를 만들었고….PHP로의 포팅은 연산속도 때문에 별 의미가 없는 것 같아서 DB로 처리하는 방법을생각해 봤습니다.여러분들께 도움이 될것 같고 이 방법에 대한 의견도 듣고 싶어서 공유를 생각해 봤습니다.데이터 갯수는 정확하게 109938개입니다.제 컴퓨터가 팬티엄 450인데….한달 자료를 통채로 검색하는데도 0.00sec로 나오내요…select * from LunarToSolar where solar_date >= ‘2200/10/01’ and solar_date <= '2200/10/31';정말 대단한 MySQL입니다. lunartosolar_20020204.zip 출처: PhpSchool 반응형

공휴일 표시 MSQL DB 테이블

지원 OS : MYSQL DB가 구동되는 모든 OS

개발환경 : MYSQL 5.0

사용제한 : 프리웨어

제작자 :

진짜만세력 델파이 버전 : 고영창님 ( [email protected] )

진짜만세력 MYSQL 버전 : 이양규님 < [email protected] >

진짜만세력 MYSQL 버전에 대한민국 공유일 정보 추가 : 김성일( [email protected] )

자료설명 :

PHPSCHOOL – DOWNLOAD 게시판의 669번 자료글(양력음력변환 DB)에서 다운받은 자료에 우리나라 공휴일 정보를 추가한 것입니다.

검색 가능 기간은 양력 기준으로 1900년 01월 01일부터 2200년 12월 31일까지입니다.

공휴일은 위키백과의 ‘대한민국의 공휴일’을 참조하여 제정일자로부터 해당 공휴일이 나타나도록 하였고, 폐정일자 이후부터는 나오지 않도록 하였습니다. 각 공휴일의 연휴여부도 적용하였습니다.

필드는 다음과 같이 구성되어 있습니다.

num : 등록순번

lunar_date : 음력일자 (0000-00-00 형식)

solar_date : 양력일자 (0000-00-00 형식)

yun : 윤달여부 (0 : 평달, 1 :윤달)

ganji : 간지

memo : 공휴일

압축파일에는 3개 버전 그누보드용 테이블이 들어 있습니다.

MySQL 4.xxx euc-kr용 : g4_lunartosolar_mysql4.sql

MySQL 5.xxx euc-kr용 : g4_lunartosolar_mysql5ansi.sql

MySQL 5.xxx utf-8용 : g4_lunartosolar_mysql5utf8.sql

MYSQL 버전과 DB언어셋에 맞추어 사용하시면 됩니다.

g4_lunartosolar.zip

LIST

음력 ==> 양력변환

어떤분이 작업 해 놓은 자료 입니다…

필요할것 같아서 올려 놓아요…

펑션입니다.

CREATE OR REPLACE FUNCTION Lunar_To_Solar( as_lunar IN CHAR )

RETURN VARCHAR2

IS

Out_Of_Range exception;

ls_return VARCHAR2(100);

LunerY NUMBER(5) := 0 ;

LunerM NUMBER(5) := 0 ;

LunerD NUMBER(5) := 0 ;

i NUMBER(5) := 0 ;

j NUMBER(5) := 0 ;

— 1921년부터 해당년까지의 년수

ll_FromYear NUMBER(10) := 0 ;

ls_YunMon VARCHAR2(500); –윤달

ls_YunLen VARCHAR2(500); –윤달의 길이(29 OR 30)

–매년 정상적인 달의 길이의 합

–( 12 byte의 자리값 * (30일인 경우만 1 ) 의 합)

ls_MonLen VARCHAR2(500) ;

ls_lYearDay VARCHAR2(500); –음력으로 윤달의 길이(29 OR 30)

ls_SolarMon VARCHAR2(39) ;

–0000-00-00부터 해당일자까지의 누적일수

ll_DaySum NUMBER(10);

li_M NUMBER(5) := 0 ;

MM NUMBER(5) := 0 ;

MK NUMBER(5):=0 ;

v_loop NUMBER(5) :=0;

li_PrevYear NUMBER(5):=0;

li_OneYearDay NUMBER(5):=0;

NA NUMBER(5):=0;

YD NUMBER(5):=0;

KA NUMBER(5):=0;

SolarY NUMBER(5):=0 ;

SolarM NUMBER(5):=0 ;

SolarD NUMBER(5):=0;

BEGIN

LunerY := TO_NUMBER(SUBSTR( as_lunar,1,4)) + 2333;

LunerM := TO_NUMBER(SUBSTR( as_lunar,5,2));

LunerD := TO_NUMBER(SUBSTR( as_lunar,7,2));

— 1921-2030년 범위, 1-12월 범위, 1-31일 범위를 벗어날 경우 에러처리.

IF (SUBSTR(as_lunar,1,4) < '1921' OR SUBSTR(as_lunar,1,4) > ‘2030’)

OR

(SUBSTR(as_lunar,5,2) < '01' OR SUBSTR(as_lunar,5,2) > ’12’)

OR

(SUBSTR(as_lunar,7,2) < '01' OR SUBSTR(as_lunar,7,2) > ’31’)

THEN

raise Out_Of_Range;

END IF ;

–1921 – 2030

ls_YunMon := ‘ 0 5 0 0 4 0 0 2 0 6’||

‘ 0 0 5 0 0 3 0 7 0 0’||

‘ 6 0 0 4 0 0 2 0 7 0’||

‘ 0 5 0 0 3 0 8 0 0 6’||

‘ 0 0 4 0 0 3 0 7 0 0’||

‘ 5 0 0 4 0 8 0 0 6 0’||

‘ 0 4 010 0 0 6 0 0 5’||

‘ 0 0 3 0 8 0 0 5 0 0’||

‘ 4 0 0 2 0 7 0 0 5 0’||

‘ 0 3 0 9 0 0 5 0 0 4’||

‘ 0 0 2 0 6 0 0 5 0 0’;

–1921 – 2030

ls_YunLen := ‘ 029 0 029 0 029 029’||

‘ 0 030 0 030 030 0 0’||

’30 0 030 0 029 029 0’||

‘ 030 0 030 029 0 029’||

‘ 0 029 0 029 029 0 0’||

’29 0 029 029 0 030 0’||

‘ 029 029 0 029 0 029’||

‘ 0 029 029 0 029 0 0’||

’29 0 029 029 0 029 0’||

‘ 030 029 0 029 0 029’||

‘ 0 029 029 0 029 0 0’;

–1921 – 2030

ls_lYearDay :=

‘ 354 384 354 354 385 354 355 384 354 383’||

‘ 354 355 384 355 354 384 354 384 354 354’||

‘ 384 355 355 384 354 354 384 354 384 354’||

‘ 355 384 355 354 384 354 384 354 354 384’||

‘ 355 354 384 355 353 384 355 384 354 355’||

‘ 384 354 354 384 354 384 354 355 384 355’||

‘ 354 384 354 384 354 354 385 354 355 384’||

‘ 354 354 383 355 384 355 354 384 354 354’||

‘ 384 354 355 384 355 384 354 354 384 354’||

‘ 354 384 355 384 355 354 384 354 354 384’||

‘ 354 355 384 354 384 355 354 383 355 354’;

–1921 – 2030

ls_MonLen :=

‘26352891170527722997 6942395133511751622’||

‘3658374917051461 69422222350321332213402’||

‘346629211389 603 60523493371270934132890’||

‘290113651243 603213513232715168517062794’||

‘2741120627342647131838783477171713862477’||

‘1245119826383405336534132900343423942395’||

‘1179271526352855170117482901 69423951207’||

‘117516111866374917531453 694241423503222’||

‘37333402349318771389 699 605234932432709’||

‘28902890290113731211 6032391132327092965’||

‘1706277317171206267026471319170234751450’;

ll_DaySum := 701303 ; –1920년까지의 누적일수

–1921년무터 해당일자 직전 년도 까지의 년수 계산

ll_FromYear := LunerY – 4254 ;

FOR i IN 1..ll_FromYear LOOP

ll_DaySum := ll_DaySum + TO_NUMBER( SubStr( ls_lYearDay, i*4-3, 4 ) );

END LOOP;

–해당년도의 월 계산

IF LunerM <> 1 THEN –1월이 아닐 경우에만 월->일로 환산

li_M := 2048;

ll_FromYear := ll_FromYear + 1;

MM := TO_NUMBER( SUBSTR( ls_MonLen, ll_FromYear*4-3,4 ) );

FOR j IN 1..LunerM – 1 LOOP

–해당월의 일수를 누적시켜나간다.

ll_DaySum := ll_DaySum + 29 + TRUNC(MM / li_M);

MM := MM – TRUNC(MM / li_M) * li_M;

li_M := TRUNC(li_M / 2);

IF j = TO_NUMBER( SUBSTR( ls_YunMon,ll_FromYear*2-1,2 ) ) THEN

–윤달일 경우

ll_DaySum := ll_DaySum +

TO_NUMBER( SUBSTR( ls_YunLen, ll_FromYear*2-1,2 ) );

END IF;

END LOOP ;

END IF;

— 해당월의 일 누적

ll_DaySum := ll_DaySum + LunerD;

——————————————————

–1921년부터 해당일 까지의 누적일수를 계산하여 더한다.

——————————————————

li_PrevYear := TRUNC(ll_DaySum/365) – 1 ;

NA := TRUNC(ll_DaySum – li_PrevYear*365) ;

YD := TRUNC(li_PrevYear/4)

– TRUNC(li_PrevYear/100)

+ TRUNC(li_PrevYear/400) ;

KA := NA – YD ;

IF KA < 0 THEN li_PrevYear := li_PrevYear - 1; NA := ll_DaySum - TRUNC(li_PrevYear*365); YD := TRUNC(li_PrevYear/4) - TRUNC(li_PrevYear/100 ) + TRUNC(li_PrevYear/400); NA := NA - YD; ELSE NA := KA; END IF; --양력으로 해당년도의 일수를 계산한다. SolarY := li_PrevYear + 1; IF SolarY = TRUNC(SolarY/4)*4 AND SolarY<>TRUNC(SolarY/100)*100 THEN

ls_SolarMon := ‘ 0 31 29 31 30 31 30 31 31 30 31 30 31’;

li_OneYearDay := 366;

ELSIF SolarY = TRUNC(SolarY/400)*400 THEN

ls_SolarMon := ‘ 0 31 29 31 30 31 30 31 31 30 31 30 31’;

li_OneYearDay := 366;

ELSE

ls_SolarMon := ‘ 0 31 28 31 30 31 30 31 31 30 31 30 31′;

li_OneYearDay := 365;

END IF;

IF NA = 0 THEN

NA := li_OneYearDay;

SolarY := SolarY – 1;

END IF;

FOR I IN 1..13 LOOP

v_loop := I;

IF NA > TO_NUMBER( SUBSTR( ls_SolarMon,I*3-2,3 ) ) THEN

NA := NA – TO_NUMBER( SUBSTR( ls_SolarMon,I*3-2,3 ) );

ELSE

EXIT;

END IF;

END LOOP;

SolarM := v_loop – 1;

SolarD := NA;

ls_return := LPAD(SolarY,4,’0′) ||

LPAD(SolarM,2,’0′) ||

LPAD(SolarD,2,’0’);

Return ls_return;

exception

WHEN DUP_VAL_ON_INDEX then

ls_return := ‘DUP_VAL_ON_INDEX 입니다.’;

Return ls_return;

WHEN INVALID_NUMBER then

ls_return := ‘INVALID_NUMBER 입니다.’;

Return ls_return;

WHEN LOGIN_DENIED then

ls_return := ‘Login Denied.’;

Return ls_return;

WHEN NOT_LOGGED_ON then

ls_return := ‘Not Logged On.’;

Return ls_return;

WHEN PROGRAM_ERROR then

ls_return := ‘Program Error입니다.’;

Return ls_return;

WHEN STORAGE_ERROR then

ls_return := ‘Storage Error입니다.’;

Return ls_return;

WHEN TIMEOUT_ON_RESOURCE then

ls_return := ‘Timeout on resource.’;

Return ls_return;

WHEN VALUE_ERROR then

ls_return := ‘VALUE_ERROR 입니다. ‘;

Return ls_return;

WHEN ZERO_DIVIDE then

ls_return := ‘Zero Divide .’;

Return ls_return;

WHEN Out_Of_Range then

ls_return := ‘범위(1921.01.01-2030.11.28)를 벗어났습니다.’;

Return ls_return;

WHEN others then

ls_return := SUBSTR(SQLERRM, 1, 100 );

Return ls_return;

END;

키워드에 대한 정보 음력 양력 변환 sql

다음은 Bing에서 음력 양력 변환 sql 주제에 대한 검색 결과입니다. 필요한 경우 더 읽을 수 있습니다.

이 기사는 인터넷의 다양한 출처에서 편집되었습니다. 이 기사가 유용했기를 바랍니다. 이 기사가 유용하다고 생각되면 공유하십시오. 매우 감사합니다!

사람들이 주제에 대해 자주 검색하는 키워드 엑셀 음력 양력 변환 하기(LunarToSolar 함수)

  • 생일
  • 달력
  • 캘린더
  • xlMaster

엑셀 #음력 #양력 #변환 #하기(LunarToSolar #함수)


YouTube에서 음력 양력 변환 sql 주제의 다른 동영상 보기

주제에 대한 기사를 시청해 주셔서 감사합니다 엑셀 음력 양력 변환 하기(LunarToSolar 함수) | 음력 양력 변환 sql, 이 기사가 유용하다고 생각되면 공유하십시오, 매우 감사합니다.

See also  시바이 누 소각 | 이더리움 고래들은 바쁘다/세계기업 인텔,시바이누 급등 포착! 토큰 소각은 증가 채굴용 반도체 칩 생산/ 6 개의 정답

Leave a Reply

Your email address will not be published. Required fields are marked *