programing

PHP/Oracle:시간표시

css3 2023. 10. 2. 15:21

PHP/Oracle:시간표시

면책 사항:날짜/시간을 표시하는 가장 좋은 방법은 유닉스 타임스탬프 또는 PHP라는 것을 잘 알고 있습니다.DateTimedDATE자료형.

그런 상황에서 시간 데이터만 저장하는 데 가장 적합한 데이터 유형(PHP는 물론 Oracle에서도)이 무엇인지 궁금합니다.는 날짜 구성 요소를 저장하는 데 관심이 없습니다. 시간만.

를 들면, 처럼이 , .employee그/그녀의 전형적인 업무 일정을 저장하고자 했던 엔티티.이 직원은 오전 8시부터 오후 5시까지 근무할 수 있습니다.이 시간에 대한 날짜 구성 요소가 없는데, 이를 저장하고 대표하기 위해 무엇을 사용해야 합니까?

고려한 옵션:

  1. 문자열로, 표준 형식(24시간 HH:MM:SS+Z).
  2. 0 < = n < 24 범위의 숫자로, 분수 부분이 분/초를 나타냅니다(시간대 정보를 저장할 수 없습니까?).
  3. As PHPDateTimedDATE된/와 같이합니다.0001-01-01.
  4. (PHP (PHP))integerdTIMESTAMP).

현재 위의 #3을 사용하고 있는데, 이런 데이터 타입을 잘못 사용하는 것 같아 짜증이 납니다.하지만 제가 아는 한 최고의 사용성을 제공합니다.PHP와 유닉스 모두에서 예상대로 모든 것을 비교하고 정렬하면 시간대 데이터를 유지할 수 있으며 데이터를 표시하는 데 필요한 특별한 조작이 없습니다.

제가 간과하고 있는 게 있나요, 아니면 더 적절한 방법이 있나요?

건 .interval day자료형.실제로 사용할 필요는 없었지만, 다음과 같은 것들이 효과가 있을 입니다.

interval day(0) to second(6)

사용하는 옵션(3)이 가장 좋습니다.

Oracle은 시간 및 날짜를 저장할 수 있는 다음과 같은 유형이 있습니다.

  • 날짜.
  • 타임스탬프((로컬) 시간대 포함)
  • 매년 한달 간격
  • 일초 간격

구간 데이터 유형은 시작 시점과 완료 시점을 고려하기 때문에 사용자에게 선택 사항은(는) 시작 시점과 완료 시점을 고려하기 때문입니다.날짜와 간격을 하나씩 사용할 수도 있지만, 아직 "잘못된" 날짜가 하나 남아있기 때문에, 저는 이것이 일관성이 없다고 생각합니다.

말씀하신 다른 모든 옵션은 사용자 측에서 더 많은 작업이 필요하며, 기본 날짜 유형에 비해 성능이 저하될 수도 있습니다.

오라클 날짜 유형에 대한 자세한 정보: http://docs.oracle.com/cd/B19306_01/server.102/b14225/ch4datetime.htm#i1005946

이 질문에 대한 가장 정확한 답은 데이터를 어떻게 할 것인가에 전적으로 달려 있다고 생각합니다.모든 작업을 PHP로 수행하고 데이터베이스에 아무것도 저장하지 않을 계획이라면 데이터를 저장하는 가장 좋은 방법은 PHP에서 수행하는 작업을 도와주는 형식으로 데이터를 가장 쉽게 얻을 수 있는 방법입니다.그것은 정말로 그것들을 끈으로 저장하는 것일지도 모릅니다.DBA에게는 끔찍한 소리로 들릴 수 있지만, 데이터베이스가 애플리케이션을 지원하기 위해 존재한다는 사실을 기억해야 합니다.반면에 데이터베이스에서 멋진 쿼리를 사용하여 비교를 많이 하는 경우에는 쿼리를 가장 효율적으로 만드는 형식으로 데이터베이스의 모든 것을 저장해야 합니다.

작업한 시간을 계산하는 과중한 작업과 같은 작업을 수행하는 경우 십진법 형식으로 변환하면 최종적으로 몇 시간(분)으로 변환하기 전에 계산하기가 쉬워질 수 있습니다.간단한 함수는 데이터베이스에서 데이터를 가져올 때 10진수를 앞뒤로 변환하여 10진수로 변환하고 모든 계산을 수행한 다음 다시 실행하여 시간 형식으로 변환할 수 있습니다.

유닉스 타임스탬프를 사용하는 것은 날짜를 계산할 때 유용하지만, 시간을 계산할 때는 그렇지 않을 수 있습니다.타임스탬프에 타임스탬프를 아주 쉽게 추가하는 것과 같이 이것을 사용하는 긍정적인 점이 있는 것 같지만, 저는 모든 것을 타임스탬프로 변환하여 계산하는 것이 귀찮고 성가신 일이라는 것을 알게 되었습니다. 그래서 저는 이 시나리오를 피하고자 합니다.

요약하자면:

  1. 데이터를 쉽게 저장하되 데이터를 조작하지 않으려면 문자열이 효과적인 방법이 될 수 있습니다.그것들은 읽고 확인하기 쉽습니다.다른 것은 다른 것을 고르세요.
  2. 숫자로 계산하면 매우 쉬운 계산이 가능합니다.시간/날짜를 10진수로 변환하고, 모든 헤비타트를 수행한 다음, 실시간 형식으로 되돌려서 저장합니다.
  3. PHP의 Datetime과 Oracle의 Date 둘 다 편리하고, Oracle과 PHP에 데이터를 조작할 수 있는 환상적인 기능이 내장되어 있지만, 최상의 기능이라도 소수점을 추가하는 것보다 더 어려울 수 있습니다.데이터를 날짜 형식으로 데이터베이스에 저장하는 것이 아마도 안전할 것이라고 생각합니다. 특히 쿼리 내의 열을 기반으로 계산을 수행하고자 할 경우 더욱 그렇습니다.PHP 안에서 당신이 그것들을 어떻게 사용할지는 당신이 어떻게 사용할지 결정할 것들을 어떻게 사용할 것인지가 결정될 것입니다.
  4. 옵션 4를 바로 제외하겠습니다.

편집: 방금 친구와 시간 유형에 대해 재미있는 대화를 나눴습니다.또 한 가지 주의해야 할 점은 시간에 기반을 둔 개체가 해결하는 것보다 더 많은 문제를 일으킬 수 있다는 것입니다.그는 배달 날짜와 시간을 추적하는 애플리케이션을 조사하고 있었습니다.데이터는 실제로 날짜 시간 객체에 저장되었지만 문제점은 트럭 배달 시간이 특정 요일과 배달 시간대로 설정된다는 것입니다.배달이 가능한 시간은 제시간 또는 한 시간 후입니다.이것은 트럭이 밤 11시 30분에 도착하고 45분 후에 나타났을 때 약간의 혼란을 야기시켰습니다.아직 허용 가능한 창 안에 있는 동안 다음 날로 표시되고 있었습니다.또 다른 문제는 4시에 실제로 작동하는 물류 센터에서 발생했습니다.AM 24시간 시작.직원들에게 시간을 설정하는 것이 효과적이었습니다. 그리고 그것을 정상적인 날짜를 중심으로 하는 지불로 통합하는 것은 상당히 골치 아픈 일이었습니다.

언급URL : https://stackoverflow.com/questions/11433482/php-oracle-time-representation