당신은 주제를 찾고 있습니까 “음력 양력 변환 sql – 엑셀 음력 양력 변환 하기(LunarToSolar 함수)“? 다음 카테고리의 웹사이트 https://sk.taphoamini.com 에서 귀하의 모든 질문에 답변해 드립니다: https://sk.taphoamini.com/wiki/. 바로 아래에서 답을 찾을 수 있습니다. 작성자 Excel Master 이(가) 작성한 기사에는 조회수 5,874회 및 좋아요 22개 개의 좋아요가 있습니다.
Table of Contents
음력 양력 변환 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 함수). 댓글에서 더 많은 관련 이미지를 보거나 필요한 경우 더 많은 관련 기사를 볼 수 있습니다.
주제에 대한 기사 평가 음력 양력 변환 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, 이 기사가 유용하다고 생각되면 공유하십시오, 매우 감사합니다.