2011-01-06 3 views
1

"7 년 4 개월"(예 : 다년간의 경험) 같은 것을 데이터베이스에 저장하는 가장 좋은 방법은 무엇입니까? 흙손?DB에 길이를 저장하는 방법

+1

중복 될까요? http://stackoverflow.com/questions/718332/what-is-the-best-way-to-represent-a-timespan-in-sql-server-ce – hometoast

+1

@hometoast - 다른 RDBMS – JNK

+0

모든 답변 주셔서 감사합니다. 나는 int를 사용할 것입니다. – Prabhu

답변

6

BIGINT 초 또는 틱을 저장하십시오.

예를 들어, 몇 년 동안의 경험을 통해 시작 날짜를 저장하고 데이터베이스를 읽을 때 시간을 계산하는 것이 좋습니다.

2

사용 초에 그대로

+0

SQL 서버에 실제 데이터 형식이 아닙니다 ... – JNK

+0

@JNK 당신 말이 맞습니다. 나는 필요한 변경을 만들었습니다. 질문 안에는 SQL Server에 대한 언급이 없습니다 .. –

+0

Downvote가 제거되었습니다! 편집 해 주셔서 감사합니다. – JNK

0

스토어를 변환 시간은 diff를 나타 내기 위해 [BIGINT SQLServer에 대한 읽기]. 나는. 문자열 7 years 4 months. 왜? 7 년 (또는 4 개월)이란 무엇입니까? 지표면에서는 시간 간격이라고 생각하지만 그렇지 않습니다. 월이나 일년 중 어느 것도 정적 시간 수 (일)를 갖지 않으므로 실제 값은 해당 간격의 시작 시점에 따라 다릅니다.

모든 문제는 고맙지 만 사실은 질문을 해결하는 유일한 대답입니다. 7 years 4 months은 시작점이없는 직렬화 가능 값이 아닙니다. 그러므로 presentation == value.

+0

이것은 꽤 끔찍한 생각입니다. 이벤트 b가 이벤트 b보다 얼마나 오래 걸렸는지를 알고 싶다면 어떻게됩니까? 그는 문자열을 구문 분석해야합니까? – JNK

+0

그 다음 그는 잘못된 질문을하고 있습니다. 올바른 질문은 "어떻게해야합니까?"대신에 "저장해야하는 것"이 ​​될 것입니다. –

+0

당신이 말하는 것을보고, 그래서 당신에게 +를주었습니다.나는 그 질문이 조금 모호하다고 생각하고, 당신이 준 답변이 내가 생각하는 * Prabhu가 생각하려고하는 것에 대한 좋은 접근법이라고 생각지 않는다. 그러나 인용 된 예제를 토대로, 이것은 실제로 아마도 최고 일 것이다. 조언. (큰 그림에 대한 내 무지를 기반으로 한 큰 경우) (시작일 등을 기준으로 계산하지 말고) "Employee Years"에 대한 누군가의 답변을 정적으로 저장하려는 경우 사용자가 "7 년 4 개월"과 같은 문자열을 입력하고 그대로 저장하는 것이 합리적입니다. – Steven

0

이 필드는 변수이므로이 값에 접근하는 가장 좋은 방법은 이벤트의 (추정 된) 날짜를 저장하는 것입니다.

지금까지의 시간은 런타임에 계산되어야합니다.

편집 : 필요한 경우 런타임 계산에 사용할 종료일을 저장할 수도 있습니다.

+0

은 이전에 종료 된 이벤트에서 작동하지 않습니다. 3 주 전에 2 시간 동안 실행 한 것이 있으면 방법이 작동하지 않습니다. – JNK

+0

부당한 가정을하고 있습니다. 이벤트 기간을 저장하는 경우 어떻게해야합니까? – SLaks

+0

@JNK - 그에 따라 대답을 편집했습니다. –

0

시간 간격 즉 시작일과 종료일을 저장하면이 값이 파생 값이되며 매번 계산할 수 있습니다.

1 년 시뮬레이션을 위해 7.4를 저장하려는 경우 입상이 제한됩니다. 7.14에 대한 값을 더하면 주를 표시 할 수 없습니다.

2

SQL 서버 2005에는 시간 전용 데이터 유형이 없으므로 적절한 크기의 정수 유형을 사용하여 "일부 시간 간격"(초, 밀리 초 등)을 유지합니다. 앱 계층에서의 번역 (비교 제외). DB가 int/bigint/등을 제외하고 걱정할 이유가 없습니다.

0

수년 간의 경험을 저장하는 경우에는 두 번째 정밀도가 필요하지 않습니다. 나는 그 수를 수년 동안 저장하고 그것을 부유물로 보관할 것입니다.

그래서 "7 년 4 개월"= 7 + 4/12 = 7.333 ..

관련 문제