SQLite 데이터베이스에 datetime 값을 어떻게 삽입합니까?


109

SQLite 데이터베이스에 datetime 값을 삽입하려고 합니다. 성공한 것 같지만 값을 검색하려고하면 오류가 발생합니다.

<데이터를 읽을 수 없습니다>

SQL 문은 다음과 같습니다.

create table myTable (name varchar(25), myDate DATETIME)
insert into myTable (name,mydate) Values ('fred','jan 1 2009 13:22:15')

답변:


153

필요한 형식은 다음과 같습니다.

'2007-01-01 10:00:00'

예 : yyyy-MM-dd HH : mm : ss

그러나 가능하면 매개 변수화 된 쿼리를 사용하면 서식 세부 사항에 대해 걱정할 필요가 없습니다.


그런 문자열로 날짜별로 주문하는 방법은 무엇입니까?
IgorGanapolsky 2013

3
이와 같은 날짜 형식을 지정하면 날짜 순서와 어휘 순서가 동일하게 작동합니다. 예 : 문자열 및 날짜 모두 '2008-02-01'> '2007-02-01', '2008-01-02'> '2008-01-01'. 그러나 SQLite ORDER BY가 주문을 처리하기 때문에 엄격하게 신경 쓸 필요는 없습니다.
itowlson jul.

7
어휘 순서를 사용하여 정밀도가 다른 날짜를 안정적으로 비교할 수 없습니다 (예 : "SELECT '2007-01-02 10:00:00'> '2007-01-02 10:00';"). 1을 반환하지만 "SELECT datetime ( '2007-01-02 10:00:00')> datetime ( '2007-01-02 10:00');" 0을 반환합니다.
Shane

@itowlson 다국어 응용 프로그램이있을 때 어떻게 작동합니까?
batmaci

46

SQLite에 날짜를 저장하는 방법은 다음과 같습니다.

 yyyy-mm-dd hh:mm:ss.xxxxxx

SQLite에는 사용할 수있는 날짜 및 시간 기능도 있습니다. SQLite, 날짜 및 시간 함수에 의해 이해 된 SQL을 참조하십시오 .


3
참고로, SQLite 문서 .xxxxxx의 @TorValamo의 구문 = .SSS= % f, 즉 분수 초.
Flak DiNenno 2013

2
DateTime.parse ( '2016-05-28 14:27:00 -0300'). strftime ( '% Y- % m- % d % H : % M : % S')
rodvlopes

17

STRFTIME 함수를 사용하여 삽입 할 수 있으려면 제공하는 날짜 문자열의 형식을 변경해야합니다. 이유는 한 달 약어에 대한 옵션이 없기 때문입니다.

%d  day of month: 00
%f  fractional seconds: SS.SSS
%H  hour: 00-24
%j  day of year: 001-366
%J  Julian day number
%m  month: 01-12
%M  minute: 00-59
%s  seconds since 1970-01-01
%S  seconds: 00-59
%w  day of week 0-6 with sunday==0
%W  week of year: 00-53
%Y  year: 0000-9999
%%  % 

대안은 날짜 / 시간을 이미 허용 된 형식으로 형식화하는 것입니다.

  1. YYYY-MM-DD
  2. YYYY-MM-DD HH : MM
  3. YYYY-MM-DD HH : MM : SS
  4. YYYY-MM-DD HH : MM : SS.SSS
  5. YYYY-MM-DDTHH : MM
  6. YYYY-MM-DDTHH : MM : SS
  7. YYYY-MM-DDTHH : MM : SS.SSS
  8. HH : MM
  9. HH : MM : SS
  10. HH : MM : SS.SSS
  11. 지금

참조 : SQLite 날짜 및 시간 함수


표에 나열되지는 않았지만 문서에는 'Z'또는 '-0400'과 같은 오프셋을 추가 할 수 있다고 명시되어 있습니다
coolaj86

10

CURRENT_TIMESTAMPOF NOW()(MySQL) 대신 필요할 때 사용하십시오.


1
이것은 효과가 있습니다. 한 가지는 잘못되었습니다. CURRENT_TIMESTAMP는 UTC없이 datetime을 반환합니다.이 문제를 해결하는 방법을 알고 있습니까? 미리 감사드립니다!
Ulug'bek Ro'zimboyev

8

이것을 읽으십시오 : 1.2 Date및 Time Datatype은 날짜 및 시간을 저장하는 데 가장 적합한 데이터 유형은 다음과 같습니다.

TEXT 가장 좋은 형식은 다음과 같습니다. yyyy-MM-dd HH:mm:ss

그런 다음 페이지를 읽으십시오 . 이것은의 날짜와 시간에 대해 가장 잘 설명 SQLite합니다. 도움이 되었기를 바랍니다.


5
당신은 링크뿐만 아니라 무리, 당신의 대답을 지원하는 링크, 질문에 대답 고려해야한다
Gonzalo.-

0

이것은 가장 널리 사용되거나 효율적인 방법이 아닐 수 있지만 SQLite의 강력한 데이터 유형은 어쨌든 모두 본질적으로 문자열로 덤프되기 때문에 사용 하지 않는 경향이 있습니다.

이전에 SQLite 라이브러리 주위에 얇은 C # 래퍼를 작성했습니다 (물론 C #과 함께 SQLite를 사용할 때). 마치 DateTime 개체를 처리하는 것처럼 SQLite와의 삽입 및 추출을 처리합니다.


예를 들어 해당 필드를 기준으로 정렬하려는 경우 날짜를 잘라 내지 않습니다. 당신은 ... 문자열 비교와 끝까지
G__
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.