복붙노트

[SQL] 날짜, 시간, DATETIME, 및 TIMESTAMP 유형 사이에 어떤 차이

SQL

날짜, 시간, DATETIME, 및 TIMESTAMP 유형 사이에 어떤 차이

나는 MySQL은 모두 시간과 날짜를 저장해야합니다. 그래서 나는 그것에 대해 NOW () 함수의 사용. 하지만 내가 유형 열 메신저 phpMyAdmin을 사용해야 모르겠어요. NOW ()이 같은 시간과 날짜를 반환 주목해야한다 :

2014-11-11 12:45:34

다음 용액이고, I는 날짜와 시간 (2014년 11월 11일 및 12시 45분 34초)을 분리하는 분리기로 사용하고 개별적 DATE 타입과 TIME 타입에 저장할 수있다. 아니면 하나 개의 컬럼에서 둘 다 저장하는 VARCHAR 타입으로 사용할 수 있습니다. 그러나 나는 다음과 같은 방법으로 표준 없습니다 생각합니다. 날짜와 시간 모두를 저장하는 표준 유형은 무엇인가?

여기 내 쿼리는 다음과 같습니다 (또한 내가 지금 왜 모르는 () 함수가 작동하지 않습니다)

INSERT INTO table (timedate) VALUES (NOW())

해결법

  1. ==============================

    1.DATE : 그것은이 날짜 부분하지만 시간 부분 값에 사용됩니다. MySQL의 검색하고 표시 DATE 값 YYYY-MM-DD 형식이다. 지원 범위는 9999-12-31에 1000년 1월 1일입니다.

    DATE : 그것은이 날짜 부분하지만 시간 부분 값에 사용됩니다. MySQL의 검색하고 표시 DATE 값 YYYY-MM-DD 형식이다. 지원 범위는 9999-12-31에 1000년 1월 1일입니다.

    DATETIME : 그것은이 날짜와 시간 부분을 모두 포함하는 값에 사용됩니다. MM : SS 형식으로 MySQL을 검색하여 표시 YYYY-MM-DD HH 값을 DATETIME. 지원 범위는 9999-12-31 23:59:59 1000년 1월 1일 00:00:00.

    타임 스탬프 : 또한 모두 일시 부품이 값을 사용하고, 상기 시간 영역을 포함한다. 타임 스탬프는 2038년 1월 19일 세계 협정시 03시 14분 7초에 1970-01-01 00:00:01 세계 협정 범위를 가지고있다.

    시간 : MM : 그것의 값은 HH에있는 (큰 시간 값에 대한 SS 형식이나 HHH : MM) SS 형식입니다. 59 : 838 (59)로 59 : 59 TIME 값은 -838에서 범위 일 수있다. 시간 유형 (24 시간 미만이어야 함) 일의 시간을 나타내는 데 이용 될뿐만 아니라, 또한 시간 또는 훨씬 더 클 수있다 두 이벤트 사이의 시간 간격 (이 경과 할 수 있기 때문에 시간 부분은 매우 클 수있다 24 시간 또는 제외).

  2. ==============================

    2.나는 DATETIME과 TIMESTAMP의 차이에 약간 다른 시각을 가지고있다. 날짜 시간은 특정 시간대에 대한 참조와 함께 날짜 및 시간의 리터럴 값을 저장한다. 그래서, 난 내 마지막 생일이 발생했을 때 정확하게 표시하는 등 '2019년 1월 16일 12시 15분 0초'같은 값으로 DATETIME 열을 설정할 수 있습니다. 이 동부 표준 시간이 되었습니까? 태평양 표준시? 누가 알아? 서버의 현재 세션 시간대가 활동하기 시작 어디 () 지금과 같은 몇 가지 값으로 DATETIME 열을 설정할 때 발생합니다. 저장된 값이 유효한 현재 세션 시간대를 사용하여 현재 날짜와 시간이 될 것이다. 날짜 시간 열이 설정되고 나면, 그것은 관계없이 현재 세션의 시간대가 무엇인지 같은 표시됩니다.

    나는 DATETIME과 TIMESTAMP의 차이에 약간 다른 시각을 가지고있다. 날짜 시간은 특정 시간대에 대한 참조와 함께 날짜 및 시간의 리터럴 값을 저장한다. 그래서, 난 내 마지막 생일이 발생했을 때 정확하게 표시하는 등 '2019년 1월 16일 12시 15분 0초'같은 값으로 DATETIME 열을 설정할 수 있습니다. 이 동부 표준 시간이 되었습니까? 태평양 표준시? 누가 알아? 서버의 현재 세션 시간대가 활동하기 시작 어디 () 지금과 같은 몇 가지 값으로 DATETIME 열을 설정할 때 발생합니다. 저장된 값이 유효한 현재 세션 시간대를 사용하여 현재 날짜와 시간이 될 것이다. 날짜 시간 열이 설정되고 나면, 그것은 관계없이 현재 세션의 시간대가 무엇인지 같은 표시됩니다.

    한편, 타임 스탬프 열은 1/1/1970 00 내부 표현에 대하여 계산하도록 현재 세션 타임 존으로 해석을 사용자가 설정하는 '2019년 1월 16일 12시 15분 0초'값을 취한다 : 세계 협정시 00시. 열이 표시되면, 현재의 세션 시간대는 무엇을 기준으로 표시 변환 돌아올 것이다. 이 표시 현재 세션의 시간대로 다시 변환 한 다음 설정하는 값을 복용하고 저장하기 위해 UTC에 현재 세션의 시간대에서 변환과 같은 TIMESTAMP 생각하는 유용한 소설이다.

    내 서버가 샌프란시스코에 있지만 나는 20:00 1029년 9월 1일에 시작, 나는 시작 시간을 유지하기위한 타임 스탬프 열을 사용하는 것이라고 뉴욕에서 이벤트를 실행하고있는 경우, '미국에 세션 시간대를 설정 / 뉴욕 2009-09-01 20시 0분 0초 '과의 시작 시간을 설정합니다'. 나는 이벤트가 발생한 또는 여부를 알고 싶은 경우하지에 관계없이 지금과 시작 시간을 비교할 수 있습니다 설정 현재 세션 시간대의 (). 물론, 투시 고객에게 의미있는 방식으로 표시, 나는 올바른 세션 시간대를 설정해야합니다. 나는 시간 비교를 할 필요하지 않은 경우, 그때는 아마 상관없이 현재 세션의 시간대가 무엇인지의 (묵시적 EST 시간대와) 올바르게 표시됩니다 DATETIME 컬럼을 사용하여 더 나은을 것이다.

    TIMESTAMP 제한

    타임 스탬프 형식은 UTC '2038년 1월 19일 3시 14분 7초'으로하고 특정 애플리케이션에 사용할 수되지 않을 수도 있습니다 '1970-01-01 0시 0분 1초'UTC의 범위를 가지고있다. 이 경우 당신은 DATETIME 타입을 사용해야합니다. 당신은 물론, 항상 최신의 기능을 가지는이 형태를 사용 할 때마다 현재 세션의 시간대가 같은 () 이제 제대로 설정되어 있는지 걱정해야합니다.

  3. ==============================

    3.Saty는 그들 사이의 차이점을 설명했다. 당신의 연습의 경우, 지금의 출력을 유지하기 위해 날짜를 사용할 수있다 ().

    Saty는 그들 사이의 차이점을 설명했다. 당신의 연습의 경우, 지금의 출력을 유지하기 위해 날짜를 사용할 수있다 ().

    예를 들면 :

    CREATE TABLE Orders
    (
      OrderId int NOT NULL,
      ProductName varchar(50) NOT NULL,
      OrderDate datetime NOT NULL DEFAULT NOW(),
      PRIMARY KEY (OrderId)
    )
    

    당신은 W3 스쿨에서 자세한 내용을보실 수 있습니다.

  4. from https://stackoverflow.com/questions/31761047/what-difference-between-the-date-time-datetime-and-timestamp-types by cc-by-sa and MIT license