database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
Oracle
Informix
Sybase
ㆍMS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
MS-SQL Q&A 1395 게시물 읽기
No. 1395
사용자정의 함수로 시작일 마지막일 알기
작성자
황대권(sufi1)
작성일
2004-06-25 16:24
조회수
3,786

--DROP FUNCTION TABLE_MONTH_INFO();

CREATE FUNCTION TABLE_MONTH_INFO ( @CurrentDate Char(10) )
RETURNS @tblMONTHINFO Table
(
CurrentDate Char(10),
MSTART Char(10),
MEND Char(10),
MSTARTDAY integer,
MENDDAY integer
)
--/////// {
AS BEGIN

DECLARE @MSTART as Char(10)
DECLARE @MEND_TEMP as Varchar(30)
DECLARE @MEND as Char(10)
DECLARE @MSTARTDAY as integer
DECLARE @MENDDAY as integer

SELECT @MSTART = LEFT(@CurrentDate, 4) + '-' +Substring(@CurrentDate, 6,2) + '-01'
SELECT @MEND_TEMP = DATEADD(day, -1, DATEADD(mm, 1, @MSTART))
SELECT @MEND = CAST(DATENAME(yyyy, @MEND_TEMP) as Char(4)) + '-' + CAST(DATENAME(mm, @MEND_TEMP) as Char(2)) + '-' + CAST(DATENAME(dd, @MEND_TEMP) as Char(2))


SELECT @MSTARTDAY = CAST(RIGHT(@MSTART, 2) AS Integer)
SELECT @MENDDAY = CAST(RIGHT(@MEND, 2) AS Integer)


INSERT @tblMONTHINFO (CurrentDate, MSTART, MEND, MSTARTDAY, MENDDAY) VALUES ( @CurrentDate, @MSTART, @MEND, @MSTARTDAY, @MENDDAY)

RETURN
END
--/////// }

==========================================================================

쿼리 : SELECT * FROM [dbname].[dbo].[TABLE_MONTH_INFO]('2004-06-25')

결과 :

CurrentDate | MSTART| MEND | MSTARTDAY | MENDDAY

2004-06-25 | 2004-06-01 | 2004-06-30 | 1 | 30

==========================================================================

더 간단하게 만들수 있으면 한수부탁합니다...!!!

이 글에 대한 댓글이 총 1건 있습니다.

MS SQL SERVER는 해당월의 마지막일자를

가져오는 함수가 없던가요.

전체적인 방법은 유사한데 CONVERT를 사용해서

좀더 간편하게 했을 뿐입니다.

글구 의도는 정확히 모르겠지만..

한개의 문장으로 구사하는 것이 간편하지 않을런지..

 

INSERT INTO TABLE_MONTH_INFO
SELECT A.VAL,
             A.MSTART,
             A.MEND,
             DAY(A.MSTART),
             DAY(A.MEND)
FROM (
          SELECT A.VAL                           VAL,
                       SUBSTRING(A.VAL, 1, 8) + '01'  MSTART,
                      CONVERT(CHAR(10), DATEADD(D, -1, CONVERT(CHAR(6), DATEADD(M, 1, A.VAL), 112) + '01'), 121) MEND
            FROM ( SELECT '2004-06-25' VAL ) A
           ) A

 

 

SQL님이 2004-06-27 00:50에 작성한 댓글입니다.
이 댓글은 2004-06-27 00:54에 마지막으로 수정되었습니다. Edit
[Top]
No.
제목
작성자
작성일
조회
1398SQL 백업과 복원은 어떻게?
미노스
2004-06-28
3665
1397freetds사용하여 php에서 win2000서버의 mssql 연결하기
장영학
2004-06-28
3071
1396FreeTDS ODBC 연결하는 법 가르쳐주세요
이대범
2004-06-27
2855
1395사용자정의 함수로 시작일 마지막일 알기 [1]
황대권
2004-06-25
3786
1394월초 월말 구하기 날짜 함수이용 [1]
황대권
2004-06-25
7622
1393[질문]합계 값이 매번 바뀝니다...ㅠ.ㅠ 쿼리문이 이상한가요..? [2]
정해원
2004-06-25
3429
1392[질문]쿼리문 좀 알려주세요. [1]
가우나라
2004-06-24
2602
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.016초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다