2011-08-21 6 views
0

2 개의 mysql 필드를 하나로 결합한 다음 새 필드를 검색 할 수 있도록 작업이 주어졌습니다. 전년도 등록 된 데이터베이스와 현재 년도 등록 된 데이터베이스에서 결합해야하는 2 개의 필드. 이 두 필드의 형식은 dd/mm/yyyy입니다. 나는이 필드를 Years라는 필드에 결합했습니다. 동일한 형식의 dd/mm/yyyy이지만 쉼표 (,)로 분리 된 연도가 등록되어 있습니다. 나는이 열에 몇 가지 종류의 질의를 수행하는 방법에 대해 궁금해합니다. 내가 수행해야하는 MySQL 쿼리는 다음과 같습니다. 날짜 사이의 모든 표시 : mm/yyyy 및 mm/yyyy, 이전 : mm/yyyy, 이후 : mm/yyyy쉼표로 구분 된 mysql 필드를 검색하는 가장 좋은 방법

모든 도움을 주시면 감사하겠습니다.

감사합니다.

+5

이전 테이블 구조가 현재보다 나은 것으로 보입니다. –

+0

올바른 데이터 형식, 즉 날짜가 아닌 varchar로 날짜를 저장하는 것이 좋습니다. str_to_date() 함수를 살펴보고 이미 제안 된대로 테이블을 정규화하십시오. –

+0

그들이 매년 갖고 있기 때문에 열을 편집하여 등록 된 새해를 추가 할 수 있기를 원하십니까? –

답변

2

를 사용하는 것보다 유지 관리가 나는 그것을 좋아하지하지 않지만 여전히 더 쉽고 더 나은 당신은 당신이 다음 솔루션을 사용할 수 있습니다 필요한 경우 : (

추출물 날짜 사용 시작일 = STR_TO_DATE (SUBSTRING을 your_new_field, 1, 10)) 및 종료일 = STR_TO_DATE (SUBSTRING (your_new_field, 12, 10))

+0

흠.이 문제는 매년마다 비즈니스가 등록 될 회사에 등록되었으므로 결국 dd/mm/yyyy, dd/mm/yyyy, dd/mm/yyyy와 같은 문자열을 가질 수 있습니다. , dd/mm/yyyy 등등 –

+0

에서 볼 수 있습니다. 하지만 id_from_this_table, date_registered라는 두 개의 열이있는 추가 테이블을 가질 수 있습니다. 클라이언트 용 양식을 작성할 때 날짜를 간단히 결합 할 수 있으므로 저장하기 전에이 양식을 분석하십시오. 이 경우 복잡한 쿼리를 작성해야 할 때 2 개의 테이블을 조인해야합니다. –

+0

감사합니다 andrej 나는 당신의 접근 방식을 취할 것이고, 저는 정상화 페이지를 읽은 후에 이것을 생각하게되었습니다. –

2

Do not do this! 정확하게 (어떻게 든 SQL 문자열 연산과 Datefunctions는 storedprocedurem에서 추정 할 수 있습니다.) 모르지만 데이터베이스의 성능이 반드시 떨어질 것입니다. 이 관계를 사용하십시오.

입니다 : (. 예를 들어, 세 개의 날짜 ..)

  • 빠른 방법은
  • 더 확장 코드
  • 쉽게
  • 훨씬 더 이해하기
  • 휴대용
  • 이상의 다른 데이터베이스
  • 을에

기존 플랫폼에 문제가있는 경우 y 두 가지 대안이 모두 지원되는 코드 기반을 사용하십시오. 이 쉼표로 구분 된 목록을

0

데이터베이스가 '최초의 표준화 된 양식 (1NF)를'파괴 될 것이다 및 매우 ineffecient 될 것이다.

선택한 날짜를 검색하려면 테이블의 모든 행을 쿼리하거나 LIKE을 매우 부진하게 사용해야합니다.

이 작업을 수행하는 사람은 데이터베이스 정규화에 대해 this article을 읽어야합니다.

두 개의 DATE 또는 DATETIME 필드를 사용하고 MySQL 외부에서 포맷하는 것이 잘못된 이유는 무엇입니까?

관련 문제