728x90
반응형
SMALL
1. Oracle
SQL 예제:
SELECT TO_CHAR(SYSDATE - TO_DATE('2024-12-01', 'YYYY-MM-DD'), '9999') || ' days' AS difference_text
FROM DUAL;
시간과 분까지 포함:
SELECT
FLOOR(SYSDATE - TO_DATE('2024-12-01', 'YYYY-MM-DD')) || ' days, ' ||
FLOOR((SYSDATE - TO_DATE('2024-12-01', 'YYYY-MM-DD')) * 24) || ' hours, ' ||
FLOOR((SYSDATE - TO_DATE('2024-12-01', 'YYYY-MM-DD')) * 24 * 60) || ' minutes' AS difference_text
FROM DUAL;
결과 (SYSDATE = 2024-12-11 12:00:00):
10 days, 240 hours, 14400 minutes
Oracle 특징:
- 기본적으로 날짜 차이는
day
단위로 계산됩니다. TO_CHAR
를 사용하여 숫자를 문자열로 변환 후 문자열 연산(||
)으로 결합.
2. MySQL
SQL 예제:
SELECT CONCAT(DATEDIFF(NOW(), '2024-12-01'), ' days') AS difference_text;
시간과 분까지 포함:
SELECT CONCAT(
DATEDIFF(NOW(), '2024-12-01'), ' days, ',
TIMESTAMPDIFF(HOUR, '2024-12-01 00:00:00', NOW()), ' hours, ',
TIMESTAMPDIFF(MINUTE, '2024-12-01 00:00:00', NOW()), ' minutes'
) AS difference_text;
결과 (NOW() = 2024-12-11 12:00:00):
10 days, 240 hours, 14400 minutes
MySQL 특징:
CONCAT
를 사용하여 문자열을 조합합니다.DATEDIFF
는 일(day) 단위로만 차이를 계산하며, 시간 단위는TIMESTAMPDIFF
를 사용.
3. SQL Server
SQL 예제:
SELECT CAST(DATEDIFF(DAY, '2024-12-01', GETDATE()) AS VARCHAR) + ' days' AS difference_text;
시간과 분까지 포함:
SELECT
CAST(DATEDIFF(DAY, '2024-12-01', GETDATE()) AS VARCHAR) + ' days, ' +
CAST(DATEDIFF(HOUR, '2024-12-01 00:00:00', GETDATE()) AS VARCHAR) + ' hours, ' +
CAST(DATEDIFF(MINUTE, '2024-12-01 00:00:00', GETDATE()) AS VARCHAR) + ' minutes' AS difference_text;
결과 (GETDATE() = 2024-12-11 12:00:00):
10 days, 240 hours, 14400 minutes
SQL Server 특징:
+
연산자로 문자열을 연결합니다.CAST
또는CONVERT
를 사용하여 숫자를 문자열로 변환.
4. PostgreSQL
SQL 예제:
SELECT CONCAT((NOW()::DATE - '2024-12-01'::DATE), ' days') AS difference_text;
시간과 분까지 포함:
SELECT CONCAT(
(NOW()::DATE - '2024-12-01'::DATE), ' days, ',
FLOOR(EXTRACT(EPOCH FROM NOW() - '2024-12-01 00:00:00') / 3600), ' hours, ',
FLOOR(EXTRACT(EPOCH FROM NOW() - '2024-12-01 00:00:00') / 60), ' minutes'
) AS difference_text;
결과 (NOW() = 2024-12-11 12:00:00):
10 days, 240 hours, 14400 minutes
PostgreSQL 특징:
CONCAT
를 사용하여 문자열을 조합합니다.EXTRACT(EPOCH FROM ...)
를 통해 초(second) 단위의 차이를 계산 후, 이를 나눠서 시간(hour) 및 분(minute)으로 변환.
5. SQLite
SQL 예제:
SELECT CAST(JULIANDAY('now') - JULIANDAY('2024-12-01') AS INT) || ' days' AS difference_text;
시간과 분까지 포함:
SELECT
CAST(JULIANDAY('now') - JULIANDAY('2024-12-01') AS INT) || ' days, ' ||
CAST((JULIANDAY('now') - JULIANDAY('2024-12-01')) * 24 AS INT) || ' hours, ' ||
CAST((JULIANDAY('now') - JULIANDAY('2024-12-01')) * 24 * 60 AS INT) || ' minutes' AS difference_text;
결과 (JULIANDAY('now') = 2024-12-11 12:00:00):
10 days, 240 hours, 14400 minutes
SQLite 특징:
||
연산자로 문자열을 결합합니다.CAST
를 사용하여 숫자를 문자열로 변환.
비교 요약
DB | 일(day) 단위 차이 | 시간 및 분 포함 |
---|---|---|
Oracle | `TO_CHAR(date1 - date2, '9999') | |
MySQL | CONCAT(DATEDIFF(date1, date2), ' days') |
CONCAT 와 TIMESTAMPDIFF 를 사용하여 시간 및 분 포함 |
SQL Server | CAST(DATEDIFF(DAY, date1, date2) AS VARCHAR) |
CAST 와 DATEDIFF 를 조합하여 문자열 반환 |
PostgreSQL | CONCAT((date1::DATE - date2::DATE), ' days') |
EXTRACT(EPOCH FROM ...) 로 초 단위 계산 후 나눗셈 |
SQLite | CAST(JULIANDAY(date1) - JULIANDAY(date2) AS INT) |
JULIANDAY 결과를 계산 후 ` |
추가 팁:
- 날짜 차이를 "00일 00시간 00분" 형식으로 출력하려면 조건문 또는 복잡한 문자열 조작이 필요합니다.
- 숫자 데이터를 문자열로 변환 시 각 DB에서 제공하는 함수(
CAST
,TO_CHAR
,CONCAT
)를 활용하세요.
2024.12.11 - [데이터베이스] - 데이터베이스별 두 날짜 간의 차이 계산 : 예시코드
2024.12.11 - [데이터베이스] - 데이터베이스별 날짜 "00일 00시간 00분" 형식으로 출력
반응형
SMALL
'데이터베이스' 카테고리의 다른 글
데이터베이스별 두 날짜 간의 차이 계산 : 예시코드 (0) | 2024.12.11 |
---|---|
데이터베이스별 날짜 "00일 00시간 00분" 형식으로 출력 (0) | 2024.12.11 |
데이터베이스별 문자열 처리 방법 : 예시코드 (0) | 2024.12.11 |
데이터베이스별로 날짜형식으로 변환 방법 : 예시코드 (0) | 2024.12.11 |
PostgreSQL 에러코드 및 해결 방법 : 예시코드 (0) | 2024.12.11 |