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 6415 게시물 읽기
No. 6415
ORACLE에서 MSSQL로 날짜계산 변환 질문입니다.
작성자
곰보
작성일
2012-09-20 17:58
조회수
8,620

안녕하세요 너무 막히는 부분이 있어서 방문을 하게 되었습니다.

오라클 프로시저단에 다음과 같은 쿼리가 있습니다.

SELECT (TO_DATE(변수, 'YYYYMMDDHH24MISS') - TO_DATE('19700101000000', 'YYYYMMDDHH24MISS') )*86400 - 32400

INTO .........

............

 

날짜 계산하는 부분인데 MSSQL에서 다음과 같이 변경했더니 에러가 발생합니다.

SELECT @변수 =  (CONVERT(DATETIME, '20120920') - CONVERT(DATETIME, '19700101'))*86400 - 32400

 

데이터 형식 datetime을(를) int(으)로 암시적으로 변환할 수 없습니다. CONVERT 함수를 사용하여 이 쿼리를 실행하십시오.

 

86400를 곱하는 부분에서 에러가 발생을 하는것이 확인되었습니다.

위의 오라클 결과와 동일하게 변경하는 방법이 없을까요..ㅠㅠ

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

날짜끼리 뺄셈을 하면 오라클에서는 차이가 나는 날짜를 구할 수 있지만

MS-SQL은 DATEDIFF()라는 함수를 이용해서 특정 단위(초,분,시,일 등)수준의 차이를 구할 수 있습니다.

 

더불어 유의하실 점은 뻴셈과는 그 순서가 다릅니다.

 

해서 원하시는 값을 구하시기 위해서는 다음과 같이 하시면 됩니다.

 

 SELECT @변수 = DATEDIFF( DAY, CAST( '19700101' AS DATETIME ), CAST( '20120920' AS DATETIME ) ) * 86400 - 32400;

우욱님이 2012-09-21 00:58에 작성한 댓글입니다. Edit

감사합니다. 덕분에 해결이 되었습니다.

곰보님이 2012-09-21 15:49에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
6419테이블 행수가 select에 영향을 미치는가? [1]
김형태
2012-09-24
7204
6418프로시져안에 서브 프로시져를 만드는방법 [1]
곰보
2012-09-21
6955
6416DB연결상태
박판규
2012-09-21
8523
6415ORACLE에서 MSSQL로 날짜계산 변환 질문입니다. [2]
곰보
2012-09-20
8620
6414sql server 2008 r2 설치 문제입니다 [1]
mssql
2012-09-19
7918
6413쿼리작성질문입니다. [4]
정인수
2012-09-18
6524
6412정렬에 관한 질문입니다. [4]
박원준
2012-09-13
6737
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.021초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다