2023. 9. 21. 17:44

MySQL Join걸어서 Update하기

꼭 까먹을만 하면 한번씩 쓰는 일이라...

나중에 찾아쓰기 좋게 여기에 적어놓음

 

UPDATE [TABLE_NAME] a INNER JOIN [TABLE_NAME_1] b ON A.[COL_NAME] = B.[COL_NAME]
SET [TARGET_COL_NAME] = (VALUE)
[WHERE ... ]

 

 

2023. 5. 18. 09:49

mysql 두 날짜 사이의 날짜 목록 가져오기

select * from 
(select adddate('1970-01-01',t4.i*10000 + t3.i*1000 + t2.i*100 + t1.i*10 + t0.i) selected_date from
 (select 0 i union select 1 union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union select 8 union select 9) t0,
 (select 0 i union select 1 union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union select 8 union select 9) t1,
 (select 0 i union select 1 union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union select 8 union select 9) t2,
 (select 0 i union select 1 union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union select 8 union select 9) t3,
 (select 0 i union select 1 union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union select 8 union select 9) t4) v
where selected_date between '2012-02-10' and '2012-02-15';

1970-01-01 은 적당한 값으로 바꿔도 무방

2012-02-10 은 목록 출력 시작일

2012-02-15 는 목록 출력 종료일, 오늘 날짜로 하고 싶으면 DATE_FORMAT(CURDATE(),'%Y-%m-%d') 를 사용가능

 

출처 : https://stackoverflow.com/questions/9295616/how-to-get-list-of-dates-between-two-dates-in-mysql-select-query

 

How to get list of dates between two dates in mysql select query

I want list of dates lies between two dates by select query. For example: If i give '2012-02-10' and '2012-02-15' I need the result. date ---------- 2012-02-10 2012-02-11 2012-02-12 2012-0...

stackoverflow.com

 

2021. 3. 26. 12:16

파일에서 Data를 직접 Table로 Import 시키기(MySQL)

MySQL(MariaDB) 에서 구분자로 구분되어 있는 파일을 읽어 바로 Table에 집어 넣는 기능

 

LOAD DATA INFILE 파일이름 INTO TABLE 테이블이름
FIELDS TERMINATED BY 컬럼구분자
LINES TERMINATED BY 라인구분자
(
     컬럼으로 구분되는 항목 대응 변수들(@로 시작)
) SET
     각 컬럼명 = 변수들(후처리가 필요한 경우 사용)


LOAD DATA INFILE 파일이름 INTO TABLE 테이블이름
위의 항목을 다 써야 하는 것은 아니고,

FIELDS TERMINATED BY 컬럼구분자

이정도만 써도 동작은 할 수 있음

 

예제 : (SET이하 부분에 괄호가 없음에 주의!!!)

LOAD DATA INFILE 'c:\\temp\\sample.txt' INTO TABLE tbl_sample
FIELDS TERMINATED BY '^'
LINES TERMINATED BY '\r\n'
(
	@code1,
	@code2,
	@code3
) SET 
	`code1` = @code1,
	`code2` = TRIM(@code2),
	`code3` = @code3,
	`InsertDate` = date_format(NOW(),'%Y%m%d%H%i%S');

 

관련 내용:

1. table의 컬럼갯수가 data 파일의 컬럼갯수 보다 많은 경우(추가 데이터가 필요한 경우) 

: 위의 예제처럼 SET 부분에 컬럼명 및 데이터를 써줌

2. 파일의 내용에 대한 수정이 필요한 경우

: 위의 예제 처럼 SET 부분에 TRIM같은 식으로 후 처리 가능

3. Table의 마지막 컬럼에서 데이터 사이즈 경고가 나오는 경우

: 줄 끝에 대한 인식이 정상적으로 처리 되지 않아서 발생하는 현상으로 LINES TERMINATED BY 문을 사용하면 됨

 

참고 URL : dev.mysql.com/doc/refman/8.0/en/load-data.html

2021. 3. 23. 10:43

MySQL 날짜날짜 관련 사항들

- 현재 날짜 시간 가져오기

: CURDATE() -> 현재 날짜(YYYY-MM-DD)

: CURTIME() -> 현재 시간(HH:MI:SS)

: NOW(), SYSDATE() -> 현재 날짜, 시간 합쳐서 나옴

 

- 날짜 형식 설정

: DATE_FORMAT(시간, 형식문자열)

: 형식 문자열은 아래와 같음

%Y 4자리 연도
%y 2자리 연도
%m 2자리 (00-12)
%c 1자리, 10보다 작을경우 (1-12)
%M 이름(January, February…)
%b 줄인 이름(Jan, Feb…)
%d 2자리 (00-31)
%e 1자리, 10보다 작을경우 (0-31)
%D 1st, 2nd…
%H 24시간 형식 (00-23)
%h 12시간 형식 (01-12)
%I 12시간 형식 (01-13)
%k 24시간 형식, 10보다 작을경우 한자리 (0-23)
%l 12시간 형식, 10보다 작을경우 한자리 (1-12)
%i 2자리 (00-59)
%S 2자리 (00-59)
%s 2자리 (00-59)
%f 마이크로초 100만분의 1초
%p 오전/오후 AM/PM
%T 시분초 24시간 형식 (hh:mm:ss)
%r 시분초 오전/오후 12시간 형식 (hh:mm:ss AM/PM)
%j 그해의 몇번째 일인지 표시 (001-366)
%w 그주의 몇번째 일인지 표시 (0=일요일, 6=토요일)
%W 이름(Monday,Tuesday…)
%a 줄인 이름(Mon,Tue…) 
%U 그해의 몇번째 주인지 표시 (00-53) 일요일이 주의 첫번째일
%u 그해의 몇번째 주인지 표시 (00-54) 월요일이 주의 첫번째일
%X 그주가 시작된 해을 표시, %V와 같이 사용
%x 그주가 시작된 해을 표시, %v와 같이 사용
%V 그주가 시작된 해의 몇번째 주인지 표시 (01-53)
일요일이 주의 첫번째일 %X 와 함께사용
%v 그주가 시작된 해의 몇번째 주인지 표시 (01-53)
월요일이 주의 첫번째일 %x 와 함께사용

: 위의 표는 m.blog.naver.com/callsonda/220363810001 이곳의 표가 잘 만들어져 있어서 내용을 가져왔습니다.