상세 컨텐츠

본문 제목

SQL - TIMESTAMP, EXTRACT, 수학 함수, 문자열 함수 etc

Computer Science/데이터베이스

by Dohangang 2024. 4. 17. 16:35

본문

 

 

 

 

 

 

 

 

 

SQL은 다양한 시간 관련 함수를 제공하여 TIMESTAMP 및 DATE 데이터 유형을 다루고 추출할 수 있습니다. 원하는 데이터를 추출하기 위해 주요 함수와 사용 예시를 살펴보겠습니다. 

 

해당 글은 PostgreSQL을 기반으로 작성했습니다. 다른 SQL 기본 문법과 대부분 비슷하지만 다른 점이 일부 존재하니 해당 기능을 사용하고 싶을 때는 공식문서를 확인하시면 좋을 것 같습니다.

 

 

 

 

 

 

 


 

 

 

 

 

 

 

 

Timestamp 및 Extract ()

  • TIME: only time, 시, 분, 초
  • DATE: only date, 년, 월, 일, 요일
  • TIMESTAMP: date and time, 날짜 정보와 시간 정보
  • TIMESTAMPTZ: date and time and timezone, 날짜, 시간, 표준시간대
  • SQL 내에서 시간을 활용하여 산출물을 만들 수 있다

  • TIMEZONE(표준시간대): SELECT TIMEZONE('America/New_York', CURRENT_TIMESTAMP)
  • NOW(): SELECT NOW() → 현재, 전부 숫자
  • TIMEOFDAY(): SELECT TIMEOFDAY() → 시계 시각, 문자열 영어 포함 출력
  • CURRENT_TIME(): SELECT CURRENT_TIME → 현재 시각
  • CURRENT_DATE(): SELECT CURRENT_DATE → 현재 날짜

  • SHOW(): 실행 시간 값을 보여주는 매개 변수 → ALL, TIMEZONE etc

  • EXTRACT(YEAR FROM date_col): YEAR, MONTH, DAY, WEEK, QUARTER 별로 추출 + @
  • AGE(date_col): 해당 타임스탬프 내에서 현재까지의 시기를 계산해서 나타냄
  • TO_CHAR(date_col, ‘mm-dd-yyyy’): 데이터 형식을 text 형식으로 바꿔주는 일반 함수, data type formatting functions에서 원하는 패턴을 입력하면 마음대로 구성 가능
  • data type formatting functions // pattern
 

9.8. Data Type Formatting Functions

9.8. Data Type Formatting Functions The PostgreSQL formatting functions provide a powerful set of tools for converting various data types (date/time, …

www.postgresql.org

 

예시

  • SELECT EXTRACT(QUARTER FROM payment_date) AS my_quarter FROM payment
  • SELECT AGE(payment_date) FROM payment
  • SELECT TO_CHAR(payment_date, ‘mon/dd/YYYY’) FROM payment
  • SELECT DISTINCT(TO_CHAR(payment_date, 'MONTH') FROM payment
  • SELECT payment WHERE EXTRACT(dow FROM payment_date) = 1;
  • SELECT COUNT (*) FROM (SELECT TO_CHAR(payment_date, 'DY') AS DY FROM payment) WHERE dy = 'MON';

 

 

 

 

 

 

 

 

 

 

수학 함수와 연산자(PostgreSQL, Mathematical Functions and Operators)

 

9.3. Mathematical Functions and Operators

9.3. Mathematical Functions and Operators # Mathematical operators are provided for many PostgreSQL types. For types without standard mathematical conventions (e.g., …

www.postgresql.org

         

Operator (연산자) 설명 예시
+ 덧셈 2 + 3 → 5
-   뺄셈 2 - 3 → -1
곱셈 2 * 3 → 6
/ 나눗셈 5.0 / 2 → 2.5000000000000000
5 / 2  2
(-5) / 2  -2
% 나머지 5 % 4  1
거듭제곱 2 ^ 3  8
|/ 제곱근 |/ 25.0  5
||/  세제곱근 ||/ 64.0  4
@ 절대값 @ -5.0 → 5.0
&   비트 AND 91 & 15 → 11
|  비트 OR 32 | 3 → 35
# 비트 XOR  17 # 5 → 20
~ 비트 NOT ~1 → -2 
<< 비트 왼쪽 시프트 1 << 4 → 16
>> 비트 오른쪽 시프트 8 >> 2 → 2

 

Function (함수) 설명 예시
ABS(number) 숫자의 절대값 반환 ABS(-5.0) → 5.0
CEIL(number) 올림 CEIL(5.2) → 6
DIV(dividend, divisor) 나눗셈 DIV(9, 4)  2
EXP(number) 지수함수 Exponential을 계산 EXP(1.0)  2.71828182845905
FLOOR(number) 내림 FLOOR(-42.8)  -43
FACTORIAL(bigint) 계승, 팩토리얼 FACTORIAL(5)  120
LN(number) 자연로그 ln값을 계산 ln(2.0)  0.6931471805599453
LOG(number) = LOG10(number)
LOG(base, numbrer)
로그값을 계산 LOG(1000)  3
LOG(2.0, 64.0)  6.00000...
GCD(number, number)
LCM(number, number)
최대공약수, 최소공배수 GCD(1071, 462)  21
LCM(1071, 462)  23562
MOD(ividend, divisor) 나머지 연산 MOD(9, 4)  1
ROUND(number)
ROUND(number, integer)
반올림 ROUND(42.4)  42
ROUND(42.4382, 2)  42.44
ROUND(1234.56, -1)  1230
SQRT(number) 제곱근 SQRT(2)  1.4142135623730951
TRUNC(number)
TRUNC(number, integer)
숫자를 잘라 지정된 소수점 자릿수까지 표시 TRUNC(42.8)  42
TRUNC(42.4382, 2)  42.43
RANDOM() 0과 1 사이의 무작위 부동 소수점 숫자를 반환 RANDOM()  0.897124072839091

 

 

 

 

 

 

 

 

 



문자열 함수와 연산자
(PostgreSQL, String Functions and Operators)

 

9.4. String Functions and Operators

9.4. String Functions and Operators # 9.4.1. format This section describes functions and operators for examining and manipulating string values. Strings …

www.postgresql.org

Function, Operators 설명 예시
|| 문자열 연결 연산자 SELECT 'Hello' || ' ' || 'World'
CONCAT() 문자열 연결 함수 SELECT CONCAT('Hello', ' ', 'World')
LENGTH() 문자열 길이 함수 SELECT LENGTH('Hello')
UPPER() LOWER() 대소문자 변환 함수 SELECT UPPER('hello')
SELECT LOWER('WORLD')
LEFT() RIGHT() 부분 문자열 추출 함수 SELECT LEFT(’abcdef’, 3) → abc
SELECT RIGHT('abcdef, 3) → def
  • 너무 많으니 필요한 함수를 찾아서 사용하는 것이 좋다
  • SELECT LENGTH(first_name) FROM customer
  • SELECT upper(first_name) || ' ' || upper(last_name) AS full_name FROM customer
  • SELECT LOWER(LEFT(first_name, 1)) || LOWER(last_name) || ‘@gmail.com’ AS custom_email FROM customer

 

 

 

 

 

 

 

 

 

관련글 더보기