Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- procedure does not exist
- 리눅스 #우분투 포트포워딩 #리눅스 포트포워딩 #우분투22.04 php apache db #mariadb #mysql
- nodejs #express #게시판 기능 구현
- 안드로이드 #앱 아이콘 #앱 아이콘 커스텀하기 #앱 로고 만들기 #앱 아이콘 만들기 #android logo custom #android icon custom #android logo 만들기 #image asset #
- XAMPP #PHP #mysql #Android #연동
- 안드로이드 아이콘 만들기 #안드로이드 vector asset #android vector asset custom #안드로이드 vector background color change #android pathdata editor #vector drawables edit #vector drawable background color #drawable background color #an
- MySQL(MariaDB)접속 #MariaDB원격 접속 #콘솔에서mysql접속 #원격지에서MySQL #php안드로이드 연동
- 부트스트랩 추가시 오류 #
- hedisql #mariadb #mysql #마리아db #암호화 복호화 #aes512 #aes_encrypt #aes_decrypt #hedisql 펑션 생성 #hedisql 프로시저 생성 #hedisql 매개변수 #db 펑션 매개변수 #db 프로시저 #db 함수 #db return
- 안드로이드 타이머 #타이머 #handler timer #android handler timer #countdowntimer
- Module not found: Error: Can't resolve '@popperjs/core'
- react #리액트 #프로젝트 초기세팅 #초기구현 #클린코드 #cleancode #node #react-node #vite #react 설치 #react 세팅 #쇼핑몰 #eslint 설정 #vite eslint #TailWindCSS란? #테일윈드적용 #TailWindCSS 적용
- 안드로이드 앱 아이콘 변경 #안드로이드 앱 아이콘 사이즈 #안드로이드 앱 아이콘 가이드
- MySQL #안드로이드 로그인기능 #안드로이드 php 오류 #안드로이드 db #
- 터미널 #terminal #aws 인스턴스 접속
- android #tip #timer #handler #sendmessagedelayed
- Android #bottom navigation View #Bottom tab #FRAGMENT #JAVA #Material Design #안드로이드 프래그먼트 바텀 네비게이션 뷰 커스텀 #안드로이드 메뉴 아이콘 커스텀 #안드로이드 메뉴 #프래그먼트 메뉴 #fragment menu i
- my.ini위치 확인
- Apache #PHP #마리아DB #아파치
- mariadb #mysql
- hedisql limit 1000
- mysql #dataloongforcolumn #ER_DATA_TOO_LONG #mariaDB #my.ini찾기 #숨김my.ini찾기 #strict mode 해제 #strict mode
- 부트스트랩 #bootstrap install #
- 크롤링 #텍스트 크롤링 #파이썬 #구름IDE
- react #react 프로젝트 생성 #초보 #쉽게 #react 세팅 #react frontend #리액트 기본구조
- 안드로이드 로그인 회원가입 기능 #안드로이드 php 로그인 #userValidate.php #android php 중복체그 #안드로이드 회원가입 id 중복체크 기능 #android login id check
- php #안드로이드 #로그인&회원가입
- 회원가입 구현 #java
- db 프로시저 권한 부여 #db procedure 권한 부여 #
- android hedisql #안드로이드 mariaDB #안드로이드 로그인 권한 #안드로이드 로그인
Archives
- Today
- Total
맨땅에 코딩
SQLite 날짜/시간 함수 정리 - datetime 본문
목차
반응형
예를 들어 일요일 밤 6시부터 ~ 월요일 낮 2시 정도의 데이터를 얻고 싶었다.
데이터는 측정이 됐는데 원하는 시간의 데이터가 제대로 표출이 안되서 함수를 뒤지다가 답도 찾고
내가 알게된 방법들을 총 정리하고자 썼다.
내 답은 맨 아래에 첨부하겠다.
--------------------------------------------------출처 : https://marga.tistory.com/578 ---------------------------------------------------------------
SQLite에서 날짜를 표시하기 위한 함수는 아래의 5가지가 있다.
date(timestring, modifier, modifier, ...) : 날짜
time(timestring, modifier, modifier, ...) : 시간
datetime(timestring, modifier, modifier, ...) : 날짜+시간
julianday(timestring, modifier, modifier, ...) : 율리우스력 날짜
strftime(format, timestring, modifier, modifier, ...) : 포맷 지정
흔히 현재 날짜를 얻을 때 date, time, datetime을 자주 사용하게 된다.
이 함수에 'now' 문자열을 넣으면 현재 날짜와 시간을 얻을 수 있고, 이는 xCurrentTime 메소드가 제공해 주는 것이라고 SQLite 공식 페이지가 말하고 있다.(-_-;;)
즉, SELECT date('now'); 를 하면 현재 날짜가 '2011-12-25' 일 형식 으로 나오고,
SELECT datetime('now'); 를 하면 현재 날짜+시간(시:분:초)이 '2011-12-25 23:30:11' 형식으로 나온다.
단, 국제표준시간(UTC) 기준의 값을 출력한다.
우리나라의 표준 시간은 국제표준시+9 이기 때문에 시간이 틀리게 출력 된다.
해결 방법은 대략 두가지.
1. localtime 값을 이용한 현재시간 구하기
SELECT datetime('now','localtime');
위와 같이 하면 국제표준시+9 가 된 우리나라 시간이 된다.
2. 시간 값 더하기
SELECT datetime('now','+9 hours');
국제 표준시에 +9를 해 주면 우리나라 시간이 된다.
편한게 좋기 때문에 1번 추천.
더 자세한 정보는 SQLite 공식 페이지의 Date And Time Functions 페이지를 참조 하자.
보고픈님이 정리하신 SQLitet 날짜 관련 샘플
--UTC 기준의 현재 날짜/시간
select datetime('now');
2010-08-25 04:01:46
-- 로컬 기준의 현재 날짜/시간
select datetime('now','localtime');
2010-08-25 13:02:30
--현재 로컬 기준 시간에서 10분 3.5초를 더한 시간.
select datetime('now','localtime','+3.5 seconds','+10 minutes');
2010-08-25 13:14:15
--현재 로컬 시간에 3.5초를 더하고 날짜는 돌아오는 화요일 (weekday == 0 이 일요일입니다.)
select datetime('now','localtime','+3.5 seconds','weekday 2');
2010-08-31 13:05:39
--현재 달의 마지막 날짜
SELECT date('now','start of month','+1 month','-1 day','localtime');
2010-08-31
--2004-01-01 02:34:56초부터 현재까지의 총 초
SELECT strftime('%s','now') - strftime('%s','2004-01-01 02:34:56');
209785028
--현재날짜/시간 기준에서 올해 9번째달의 첫번째 화요일
SELECT date('now','start of year','+9 months','weekday 2');
2010-10-05
-- 날짜 포맷 스타일 변경
select strftime("%Y/%m/%d %H:%M:%S",'now','localtime');
2010/08/27 09:17:22
출처: https://marga.tistory.com/578 [margalog:티스토리]
SQLite 날짜/시간 함수에 대한 유효한 수정자
예시
다음은 위의 수정자를 사용한 결과를 보여주는 빠른 예입니다.
.mode line
SELECT
datetime('now'),
date('now', '+3 days'),
datetime('now', '+3 hours'),
datetime('now', '+3 minutes'),
datetime('now', '+30 seconds'),
date('now', '+3 months'),
date('now', '-3 years'),
date('now', 'start of month'),
date('now', 'start of year'),
datetime('now', 'start of day'),
date('now', 'weekday 6'),
datetime('1588965525', 'unixepoch'),
datetime('now', 'localtime'),
datetime('now', 'utc');
결과:
datetime('지금') = 2020-04-26 00:53:53
date('지금', '+3일') = 2020-04-29
datetime('지금', '+3시간') = 2020- 04-26 03:53:53
datetime('지금', '+3분') = 2020-04-26 00:56:53
datetime('지금', '+30초') = 2020-04-26 00 :54:23
date('지금', '+3개월') = 2020-07-26
date('지금', '-3년') = 2017-04-26
date('지금', '월의 시작 ') = 2020-04-01
date('지금', '연초') = 2020-01-01
datetime('지금', '시작일') = 2020-04-26 00:00:00
날짜 ('지금', '요일 6') = 2020-05-02
datetime('1588965525', 'unixepoch') = 2020-05-08 19:18:45
datetime('지금', '현지 시간') = 2020-04-26 10:53:53
datetime('지금', 'utc') = 2020-04-25 14:53:53
일요일 밤 6시부터의 데이터니 'now', 'localtime', 'weekday 0', '-7 days'로 우리나라 시간의 이번주 일요일 설정
여기서 제일 중요한 'start of day' 로 하루의 시작 시간 00:00을 설정해준 후 원하는 시간을 더해주면 됩니다
cursor = sql.rawQuery("SELECT * FROM MEMBER Where Testdate >= datetime('now','weekday 0', '-7 days','localtime', 'start of day', '+18 hours') AND Testdate <= datetime('now','weekday 0', '-6 days', 'localtime');", null);
반응형