programing

월 및 연도만 저장할 MySQL 데이터 유형

goodsources 2022. 10. 11. 22:53
반응형

월 및 연도만 저장할 MySQL 데이터 유형

저는 PHP를 STUDENTMySQL을 사용하다요일 없이 한 달과 일 년을 함께 저장할 수 있는 최적의 방법/데이터 유형을 찾고 있습니다.

날짜를 날짜로 저장하고 PHP를 사용하여 날짜를 1일로 저장해야 할지, 아니면 현재 익숙하지 않은 다른 데이터 유형을 사용해야 할지 모르겠습니다.이상적으로는 하루를 저장하고 싶지 않습니다.왜냐하면 날짜가 항상 같지는 않기 때문에 앞으로 날짜가 바뀌면 PHP 소스 코드를 변경해야 하기 때문입니다.

더 자세한 배경 정보를 위해 한 학생의 .INTENT_TO_GRAD클라이언트는 이 정보를 데이터 조작에 사용하는 것이 아니라, 리포트의 참조나 비주얼로서만 사용하고 싶은 것 같습니다. 이 되는 것 입니다.

왜 신경써요?완전한 날짜로 저장하고(아마도 항상 첫 번째 날짜를 요일로 사용) 데이터베이스 기능을 사용합니다.또한 일부만 필요할 경우 이 기능을 사용합니다.따라서 범위 쿼리 등을 수행할 수 있으므로 이 필드를 훨씬 쉽게 사용할 수 있습니다.

MySQL 매뉴얼에 부분 날짜 저장 가능이라고 나와 있습니다.

http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html#function_date-format

MySQL은 '2014-00-00-00'과 같이 불완전한 날짜의 저장을 허용하기 때문에 월 및 일 지정자의 범위는 0으로 시작합니다.

, 하려면 , , , , , , , , , , 을 할 수 .DATE 및 put 、 「 」를 합니다.00 일,일, 일, 일, 일, 일, 일, 일, 일, 일, 일, 일, 일, 일, 일, 일, 일, 일 등.2013-12-00.

연관된:MySQL 날짜 필드에 완료되지 않은 날짜 저장

데이터를 어떻게 사용할지 고려합니다.작성해야 할 보고서가 있는 경우 데이터를 더 쉽게 검색하고 사용할 수 있는 방법은 무엇입니까?

날짜 유형 필드를 사용할 필요가 없습니다.둘 다 정수인 Year 필드와 Month 필드를 가질 수 있습니다.그리고 실제로 어떤 종류의 표현이든 날짜를 필요로 할 때, 그것들을 모아서 데이트에 캐스팅하는 것은 충분히 쉽습니다.

그리고 날짜 번호를 1로 하여 날짜로 저장하고 그냥 무시해도 문제없고 정상입니다.결국, 이것은 그다지 중요하지 않은 결정이기 때문에(상대적으로) 가장 마음에 드는 것을 선택해 완성합니다.

하나의 은 '나다'에서 입니다.DATETIME/DATE★★★★★★ 。

ALTER TABLE stats 
ADD COLUMN year SMALLINT GENERATED ALWAYS AS (YEAR(stat_date)) NOT NULL,
ADD COLUMN month smallint GENERATED ALWAYS AS (MONTH(stat_date)) NOT NULL;

배경

저도 비슷한 문제가 있었어요.이 스레드를 읽고 불완전한 날짜(제로)를 저장하기로 했습니다.이전 버전의 MySQL에서는 작동했지만, 새로운 버전에서는 "Incorrect date" 오류가 발생했습니다.처럼 ''를 하면 오류를 수 .NO_ZERO_IN_DATE설정.단, 설정 자체는 권장되지 않습니다.따라서 앞으로는 strict 모드를 디세블로 하여 다른 유형의 오류를 억제함으로써 날짜의 제로만 지원할 수 있게 됩니다.

왜냐하면 NO_ZERO_IN_DATE는 더 이상 사용되지 않습니다. 향후 MySQL 릴리스에서는 별도의 모드 이름으로 삭제될 예정이며, 그 효과는 엄격한 SQL 모드의 효과에 포함됩니다.

나의 요구는 테이블의 월별 뷰를 만드는 것이었다.을 사용하다즉, 나방을 즉석에서 컴퓨팅하는 것은YEAR() ★★★★★★★★★★★★★★★★★」MONTH()선택사항이 아니었다.

생성된 열은 목적에 부합했습니다.year ★★★★★★★★★★★★★★★★★」month지표의 , 칸을 절약할 수 .VIRTUAL)STORED가 컬럼을 생성했습니다을 사용하다

링크

두 개의 열을 정수로 나누어 저장합니다.검증 케이크를 만들고 빠르고 쉽게 분류하고 그룹화할 수 있습니다.

SELECT * FROM Users
WHERE 
    MONTH(DateTime) = '07'
AND 
    YEAR(DateTime) = '2015'
AND 
    DAY(DateTime) = '26'

위와 같이 필터링할 수 있지만 년/월/일을 구분하여 저장하려는 경우 인덱싱 및 매우 큰 데이터를 적용하기 전까지는 무용지물입니다.

5.7부터는 생성된 열을 사용할 수 있습니다. 즉, 다음과 같이 복제하여 데이터 무결성을 손상시키지 않고 다른 필드에서 날짜 함수를 사용하는 동시에 년별 고유성을 적용할 수 있습니다.

CREATE TABLE `year_month` (
  `Year` int(11) NOT NULL,
  `Month` enum(
      'January',
      'February',
      'March',
      'April',
      'May',
      'June',
      'July',
      'August',
      'September',
      'October',
      'November',
      'December'
      ) NOT NULL,
  `GENERATED_YearMonth` date
      GENERATED ALWAYS AS
          ((makedate(`Year`,1) + interval (`Month` - 1) month))
      STORED,
  PRIMARY KEY (`Year`,`Month`),
  KEY `year_month_GENERATED_YearMonth_index` (`GENERATED_YearMonth`)
)
;

하시면 됩니다.VARCHAR합니다.datatype은 월 및 연도만 저장합니다.

하시는 분datepicker:-

1) mysql에서 VARCHAR 데이터형을 설정하여 월과 연도를 저장합니다.

2) jquery 검증을 사용하고 jquery 플러그인 달력 보기를 사용하는 경우 아래 코드를 수행해야 합니다.

예:-

<script>

$(document).ready(function (){

$('#monthyear').datepicker({
  autoclose:true,
  format:'mm-yy'
});

//Your form validation code here//

});
</script>

언급URL : https://stackoverflow.com/questions/9134497/mysql-datatype-to-store-month-and-year-only

반응형