본문 바로가기
잡다구리

날짜와 시간

by Growing! 2021. 7. 31.

Timestamp

  • UTC 1970년 1월 1일 0시 0분 0초(1970.01.01 00:00:00) 를 기준으로 특정 시점까지의 경과 시간을 초로 환산하여 정수로 나타낸 것이다. == Unix Timestamp == Epoch Time
  • UTC를 기준으로 하기 때문에 시차(TimeZone)의 영향을 받지 않는다.
  • 프로그래밍 언어에서는 millisecond(long) 단위를 주로 사용한다.

 

ISO 8601

  • 날짜와 시간에 관련된 데이터 교환을 다루는 국제 표준이다.
  • 그레고리력을 사용한다.
  • 날짜와 시간 값은 큰 시간 용어가 왼쪽에 위치한다(년도가 월의 왼쪽에 위치).
  • 고정된 자릿수를 갖는다. 이를 위해 필요한 경우 '0'(leading zero)를 앞에 추가한다.
  • 24시간제를 사용한다.
  • 날짜: YYYY-MM-DD 또는 YYYYMMDD
  • 시간: hh:mm:ss.sss 또는 hhmmss.sss, hh:mm:ss 또는 hhmmss
  • Time Zone 표현이 UTC 혹은 UTC의 오프셋으로 표현된다. 주어지지 않는다면 지역 시간(local time)으로 간주된다.
    • <time>Z, <time>±hh:mm, <time>±hhmm, <time>±hh
    • 시간이 UTC인 경우 시간 뒤에 빈칸 없이 'Z'(Zulu time == UTC)를 추가해야 한다. 'Z'는 UTC로 부터의 offset이 0라는 것을 의미한다.
      • Z도 오프셋으로 나타낼 수 있다: "+00:00", "+0000", "+00" (음수 표현은 허용하지 않음)
    • UTC 오프셋은 시간 뒤에 ±[hh]:[mm], ±[hh][mm], ±[hh] 형식으로 덧붙인다.
      • 예) +01:00, +0100, +01
    • UTC 시간을 계산하려면 지역시간에서 오프셋 만큼 빼야 한다.
      • "15:00-03:30"은 15:00 - (-03:30) 을 해서 18:30 UTC가 된다.
    • 다음의 모든 시간들은 동일하다.
      • "18:30Z", "22:30+04", "1130−0700", "15:00−03:30"
ISO 8601에 따라 표현된 날짜와 시간
날짜 2016-10-27
날짜 및 시간 2016-10-27T17:13:40+09:00
2016-10-27T17:14:40Z
20161027T171340Z

 

MySQL에서 날짜와 시간

  • 날짜와 시간을 위한 데이터 타입
    • time
      • 시간 정보만 저장한다.
    •  date
      • 날짜 정보만 저장한다.
    • datetime
      • 날짜와 시간 정보를 저장한다.
      • 타임존 정보를 포함하지 않는다.
      • 초는 소수점 6자리(microsecond) 까지 저장할 수 있다.
      • 범위: 1000-01-01 00:00:00 ~ 9999-12-31 23:59:59
    • timestamp
      • 날짜와 시간 정보를 저장한다.
      • 타임존 정보를 포함한다. 입력받은 시간 정보를 현재의 time_zone 설정(시스템 변수 or 세션)을 기준으로 UTC로 변환하여 저장한다. 표시할 때는 현재의 time_zone 설정에 맞게 변환한다.
        • Epoch Time(UTC) 기준의 숫자값으로 저장한다.
        • 특정 time_zone으로 저장한 후 조회한 값과 time_zone을 변경한 후 조회한 값은 서로 다르다. 저장되어 있는 UTC 값의 변화는 없다.
      • 초는 소수점 6자리(microsecond) 까지 저장할 수 있다.
      • 범위: 1970-01-01 00:00:00 UTC ~ 2038-01-19 03:14:07 UTC 까지 지원

Reference

 

댓글