source

일/월 보관(년미포함)

manycodes 2023. 10. 18. 22:53
반응형

일/월 보관(년미포함)

데이터베이스에 데이터를 저장하는 가장 좋은 방법을 찾는 데 어려움을 겪고 있습니다.DD/MM 날짜를 데이터베이스에 저장해야 하는데, 이를 쉽게 분류하고 검색할 수 있도록 저장하는 방법을 잘 모르겠습니다.

기본적으로 사용자는 중요한 날짜를 DD/MM 형식으로 저장할 수 있으며, 해당 날짜는 오늘에 가까워질 것입니다.

DATE 데이터 유형은 연도가 포함되어 있기 때문에 완전히 적합한 것 같지는 않지만, 이 데이터를 저장하는 다른 방법은 생각할 수 없습니다.모든 경우가 끝날 때까지 특정 연도를 포함하는 것은 가능하겠지만, 이것은 거의 맞지 않는 것 같습니다.

DD/MM 날짜를 데이터베이스에 저장해야 하는데, 이를 쉽게 분류하고 검색할 수 있도록 저장하는 방법을 잘 모르겠습니다.

연도 성분이 필요하지 않더라도 날짜 데이터를 저장하는 가장 좋은 방법은 날짜를 사용하는 것입니다.사용해야 할 경우 연도를 제거하거나 비교되는 연도(또는 현재 연도)로 대체할 수 있습니다.

날짜 열에 있으면 올바르게 정렬, 무결성, 검증 등이 용이합니다.

윤년에 대응하려면 '0004-02-29'를 허용하는 '0004'와 같은 해를 사용합니다.4차 연도를 사용하면 0차 연도보다 약간 복잡하지만, 예를 들어, 다른 분야와 비교하기 위해 '29-Feb'(연도에 상관없이) 날짜가 올해의 날짜로 바뀝니다.

select
    adddate(
    subdate(cast('0004-02-29' as date),
        interval 4 year),
        interval year(curdate()) year)

result: 2011-02-28

이 날짜들이 반복되나요?만약 그렇지 않다면, 한 사람이 언제 "만료되었는지" 어떻게 추적하는 방법은 무엇입니까?"만료되면 앱에서 수동으로 날짜를 제거합니다."라고 대답한다면, 단순히 저장하지 않는 이유는 무엇입니까?DD/MM해당 날짜의 다음 가능한 인스턴스로 날짜가 있습니까?예를 들어,

01/02된다2012-02-01,그리고.04\07된다2011-07-04

내장된 날짜/시간 기능이 매우 유용하기 때문에 사용하지 말 것을 강력히 권합니다.varchars아니면tinyints.

정말로 한 해를 보내고 싶다면, 하루와 한 달 동안 두 개의 열을 작성하기만 하면 됩니다.그럼 따로 보관해주세요.

CREATE TABLE `table-name` (
  `Day` tinyint NOT NULL,
  `Month` tinyint NOT NULL
);

하지만 그냥 사용하는 것이 훨씬 좋습니다.Date코드에 연도를 입력한 다음 무시합니다.

언급URL : https://stackoverflow.com/questions/4998470/storing-day-and-month-without-year

반응형