사용자 도구

사이트 도구


programming:datetime

날짜 date / 시간 time

ISO 8601

  • ISO 8601 날짜 표현 국제 표준
  • 보통 2013-10-11T10:31:45.453+09:00 같은 형태로 표현됨.

초(second)와 ms,ns

  • MySQL DATETIME type을 비롯해 날짜와 시간 정보를 저장할때 fractional second(ms, ns)부분 저장에 따라 반올림 현상으로 시간이나 날짜바 바뀌는 현상이 발생할 수 있다.
  • 애초에 모든 시간을 초(second) 까지만 저장하게 하고 일관성있게 다루거나
  • 아니면 모든 시간을 ms/ns 까지 저장하게 하고 일관성 있게 다루는 것이 좋다.
  • 이때 초 단위로 다룰 때는 메모리상의 시간 객체도 초 단위까지만 가지게 하고, 이를 JSON 등으로 전송할 때도 초단위까지만 전송하게 모든 것이 갖춰져야 한다. ms/ns 까지 다룰 때도 마찬가지 이다.
    • 이렇게 하지 않으면 DB 저장시에는 초단위로 되지만 이를 MQ 나 API로 전송할 때는 ms/ns 단위까지 전송해서 다른 시스템이 다른 시간을 가지게 될 가능성이 생긴다.
  • microservices 로 가면서 서로 다른 서비스가 비정규화된 데이터를 각자 저장할 때 시간 정보를 누구는 second 누구는 ms/ns 까지 저항하면 서로 다른 시간 정보로 인해 미묘하게 오류가 발생할 수 있다.
  • 하나의 시스템에서 두가지 시간체계를 섞어서 사용하지 않는 것이 좋다. 특히 mysql 은 이 JDBC 드라이버에서 fractional second 를 전체를 truncate 시키거나 안시키거나 하므로 일관성이 있어야 한다.
programming/datetime.txt · 마지막으로 수정됨: 2022/03/15 11:00 저자 kwon37xi