Q&A

  • 테이블설계시 날짜나 시간형 선언시 주의점
안녕하세요. 김유중이라고 합니다.

제가 문의 드리는 내용은 단순한 날짜형, 시간형 필드의 사용여부를

말하려는것이 아닙니다.



실무에서 접하지 못하신문은 좀 더 신중히 생각하시고 말씀해

주시기 바랍니다. 헷갈려요.



예를들어 보겠습니다.

A. 날짜형 필드

날짜형 필드를 사용하는것은 좋은 방법이 될 수 있으나 현 업무에서

회계,판매등의 프로그램을 만든다고 가정하면



월 판매또는 수금집계를 하고자 할때 리스트는 다음과 같이 나오겠지요



날짜 항목 금액 잔액

????.??.?? 전월이월 ???,???,??? ???,???,???

2000.07.18 입금 ???,??? ???,???,???

2000.07.19 입금 ???,??? ???,???,???

2000.07.19 출금 ???,??? ???,???,???

2000.07.20 출금 ???,??? ???,???,???

2000.07.21 입금 ???,??? ???,???,???



만약 위와같은 경우 전월이월금액을 알지 못하면 현 잔액을 구할수 없겠

지요. 그래서 여러가지 방법을 쓰고 있는줄 알고 있는데



1. 매번 전월이월금액을 계산하여 처리 한 다음

프로그램으로 이월금액을 구하여 금월 금액과 합산하여 처리 하는 방법이

있을것이고



2 한번에 쿼리로 처리 하고자 한다면

2000.07.00 이라고 만들어 월마감을 해버리면 해당월의 전월이월을

구하는게 매우 빠르고 한번의 쿼리문으로 처리 할 수 있을것 같은데



이경우 필드 타입을 날짜형으로 처리하여 프로그램으로 처리 하는

방법(1)과 문자형으로 지정하여 (2)의 방법으로 처리 하는 방법이 있을

것입니다. 어느것이 효율적인가요 ?



또한, 다른분은 위와같은경우 어떤방법으로 처리 하시는 지요



B. 시간형 필드

시간형 필드를 사용하는경우는 근태관리 프로그램을 예를들수 있는데

예를들어 매일 출,퇴근을 하며 연장근무를 하면 다음과 같은 리스트가

나올수 있는데



날짜 출근 퇴근 연장

2000.07.01 09:00 20:50 02:50

2000.07.02 09:00 18:00 00:00

2000.07.03 09:00 19:30 01:30

2000.07.04 09:00 21:40 03:40

2000.07.05 09:00 18:00 00:00

2000.07.06 09:00 20:10 02:10



이 경우 연장근무 시간을 합하여 보여 주고자 할 때

모든 연장근무를 계산한 값을 더하여 시간으로 보여 주어야

하는데 시간형으로 지정시 위의 내용처럼 표시를 해 줄 수 있는지



저같은 경우는 저장시 모두 분으로 환산하여 저장하고

보여줄때는 시간으로 환산하여 보여주고 있습니다.



그러므로 시간형을 쓰지 않고 int형을 선언하여 일반 산술식으로

계산을 하고 있습니다.



다른분은 어떻게 처리 하시나요 ?



어찌보면 간단한 문제라고 생각하시겠지만 데이터설계가 매우 중요한것으로

알고 있는데 위와같은 문제의 처리는어떤방법으로 처리를 하시는지

매우 궁금합니다.

제가 맞는것인지 아니면 다른 오류가 있는지 제가 잘못알고 있거나

모르고 있는 부분이 있는지 궁금합니다.





4  COMMENTS
  • Profile
    발걸음... 2000.08.08 03:10
    김유중 wrote:

    > 안녕하세요. 김유중이라고 합니다.

    > 제가 문의 드리는 내용은 단순한 날짜형, 시간형 필드의 사용여부를

    > 말하려는것이 아닙니다.

    >

    > 실무에서 접하지 못하신문은 좀 더 신중히 생각하시고 말씀해

    > 주시기 바랍니다. 헷갈려요.

    >

    > 예를들어 보겠습니다.

    > A. 날짜형 필드

    > 날짜형 필드를 사용하는것은 좋은 방법이 될 수 있으나 현 업무에서

    > 회계,판매등의 프로그램을 만든다고 가정하면

    >

    > 월 판매또는 수금집계를 하고자 할때 리스트는 다음과 같이 나오겠지요

    >

    > 날짜 항목 금액 잔액

    > ????.??.?? 전월이월 ???,???,??? ???,???,???

    > 2000.07.18 입금 ???,??? ???,???,???

    > 2000.07.19 입금 ???,??? ???,???,???

    > 2000.07.19 출금 ???,??? ???,???,???

    > 2000.07.20 출금 ???,??? ???,???,???

    > 2000.07.21 입금 ???,??? ???,???,???

    >

    > 만약 위와같은 경우 전월이월금액을 알지 못하면 현 잔액을 구할수 없겠

    > 지요. 그래서 여러가지 방법을 쓰고 있는줄 알고 있는데

    >

    > 1. 매번 전월이월금액을 계산하여 처리 한 다음

    > 프로그램으로 이월금액을 구하여 금월 금액과 합산하여 처리 하는 방법이

    > 있을것이고

    >

    > 2 한번에 쿼리로 처리 하고자 한다면

    > 2000.07.00 이라고 만들어 월마감을 해버리면 해당월의 전월이월을

    > 구하는게 매우 빠르고 한번의 쿼리문으로 처리 할 수 있을것 같은데

    >

    > 이경우 필드 타입을 날짜형으로 처리하여 프로그램으로 처리 하는

    > 방법(1)과 문자형으로 지정하여 (2)의 방법으로 처리 하는 방법이 있을

    > 것입니다. 어느것이 효율적인가요 ?

    >

    > 또한, 다른분은 위와같은경우 어떤방법으로 처리 하시는 지요

    >

    > B. 시간형 필드

    > 시간형 필드를 사용하는경우는 근태관리 프로그램을 예를들수 있는데

    > 예를들어 매일 출,퇴근을 하며 연장근무를 하면 다음과 같은 리스트가

    > 나올수 있는데

    >

    > 날짜 출근 퇴근 연장

    > 2000.07.01 09:00 20:50 02:50

    > 2000.07.02 09:00 18:00 00:00

    > 2000.07.03 09:00 19:30 01:30

    > 2000.07.04 09:00 21:40 03:40

    > 2000.07.05 09:00 18:00 00:00

    > 2000.07.06 09:00 20:10 02:10

    >

    > 이 경우 연장근무 시간을 합하여 보여 주고자 할 때

    > 모든 연장근무를 계산한 값을 더하여 시간으로 보여 주어야

    > 하는데 시간형으로 지정시 위의 내용처럼 표시를 해 줄 수 있는지

    >

    > 저같은 경우는 저장시 모두 분으로 환산하여 저장하고

    > 보여줄때는 시간으로 환산하여 보여주고 있습니다.

    >

    > 그러므로 시간형을 쓰지 않고 int형을 선언하여 일반 산술식으로

    > 계산을 하고 있습니다.

    >

    > 다른분은 어떻게 처리 하시나요 ?

    >

    > 어찌보면 간단한 문제라고 생각하시겠지만 데이터설계가 매우 중요한것으로

    > 알고 있는데 위와같은 문제의 처리는어떤방법으로 처리를 하시는지

    > 매우 궁금합니다.

    > 제가 맞는것인지 아니면 다른 오류가 있는지 제가 잘못알고 있거나

    > 모르고 있는 부분이 있는지 궁금합니다.

    >

    >

  • Profile
    발걸음... 2000.08.08 03:10
    김유중 wrote:

    > 안녕하세요. 김유중이라고 합니다.

    > 제가 문의 드리는 내용은 단순한 날짜형, 시간형 필드의 사용여부를

    > 말하려는것이 아닙니다.

    >

    > 실무에서 접하지 못하신문은 좀 더 신중히 생각하시고 말씀해

    > 주시기 바랍니다. 헷갈려요.

    >

    > 예를들어 보겠습니다.

    > A. 날짜형 필드

    > 날짜형 필드를 사용하는것은 좋은 방법이 될 수 있으나 현 업무에서

    > 회계,판매등의 프로그램을 만든다고 가정하면

    >

    > 월 판매또는 수금집계를 하고자 할때 리스트는 다음과 같이 나오겠지요

    >

    > 날짜 항목 금액 잔액

    > ????.??.?? 전월이월 ???,???,??? ???,???,???

    > 2000.07.18 입금 ???,??? ???,???,???

    > 2000.07.19 입금 ???,??? ???,???,???

    > 2000.07.19 출금 ???,??? ???,???,???

    > 2000.07.20 출금 ???,??? ???,???,???

    > 2000.07.21 입금 ???,??? ???,???,???

    >

    > 만약 위와같은 경우 전월이월금액을 알지 못하면 현 잔액을 구할수 없겠

    > 지요. 그래서 여러가지 방법을 쓰고 있는줄 알고 있는데

    >

    > 1. 매번 전월이월금액을 계산하여 처리 한 다음

    > 프로그램으로 이월금액을 구하여 금월 금액과 합산하여 처리 하는 방법이

    > 있을것이고

    >

    > 2 한번에 쿼리로 처리 하고자 한다면

    > 2000.07.00 이라고 만들어 월마감을 해버리면 해당월의 전월이월을

    > 구하는게 매우 빠르고 한번의 쿼리문으로 처리 할 수 있을것 같은데

    >

    > 이경우 필드 타입을 날짜형으로 처리하여 프로그램으로 처리 하는

    > 방법(1)과 문자형으로 지정하여 (2)의 방법으로 처리 하는 방법이 있을

    > 것입니다. 어느것이 효율적인가요 ?

    >

    > 또한, 다른분은 위와같은경우 어떤방법으로 처리 하시는 지요

    >

    > B. 시간형 필드

    > 시간형 필드를 사용하는경우는 근태관리 프로그램을 예를들수 있는데

    > 예를들어 매일 출,퇴근을 하며 연장근무를 하면 다음과 같은 리스트가

    > 나올수 있는데

    >

    > 날짜 출근 퇴근 연장

    > 2000.07.01 09:00 20:50 02:50

    > 2000.07.02 09:00 18:00 00:00

    > 2000.07.03 09:00 19:30 01:30

    > 2000.07.04 09:00 21:40 03:40

    > 2000.07.05 09:00 18:00 00:00

    > 2000.07.06 09:00 20:10 02:10

    >

    > 이 경우 연장근무 시간을 합하여 보여 주고자 할 때

    > 모든 연장근무를 계산한 값을 더하여 시간으로 보여 주어야

    > 하는데 시간형으로 지정시 위의 내용처럼 표시를 해 줄 수 있는지

    >

    > 저같은 경우는 저장시 모두 분으로 환산하여 저장하고

    > 보여줄때는 시간으로 환산하여 보여주고 있습니다.

    >

    > 그러므로 시간형을 쓰지 않고 int형을 선언하여 일반 산술식으로

    > 계산을 하고 있습니다.

    >

    > 다른분은 어떻게 처리 하시나요 ?

    >

    > 어찌보면 간단한 문제라고 생각하시겠지만 데이터설계가 매우 중요한것으로

    > 알고 있는데 위와같은 문제의 처리는어떤방법으로 처리를 하시는지

    > 매우 궁금합니다.

    > 제가 맞는것인지 아니면 다른 오류가 있는지 제가 잘못알고 있거나

    > 모르고 있는 부분이 있는지 궁금합니다.

    >

    >



    -----------------------------------------------------------------------------

    먼저 어떤 데이타베이스를 사용하느냐가 중요하겠지만..

    저희 같은 경우(참고로 SI 업체 6년차 임다.. ^^;;)

    날짜같은 경우 거의 문자형을 사용함다..

    왜냐하면 데이트형인 경우 데이타의 Select 시

    위와 같은 문제점이 비일비재하게 발생하거든요..

    그리고 만일 위의 경우라면 월 집계 화일을 하나

    생성해서 사용하는게 바람직하다고 생각함다..

    일일 화일에 저장하면서 trigger나 procedure 를 사용해서

    집계화일을 생성한다면 데이타의 query시 access 속도와

    테이블의 과 부하를 상당부분 해소할수 있을거 같은데..

    암튼 조금이라도 도움이 되었음...^^

  • Profile
    타락천사 2000.07.19 07:01
    안녕하세여. 타락임다..^^



    저두 다른분덜은 어케 처리하는지 궁금하군여..^^



    저 가튼 경우는 시간 가튼 경우는 yymmddhhmm나 hhmm 식으로 스트링으로 저장해서



    처리하거든여.. 이건 문제 없는데...



    글구, 전월결산 가튼것두 결산 테이블을 따르 만들어서 읽는 식으로 하거든여..



    근데 고민되는게, 결산을 자동으로 할지 수동으로 할지..



    매월 결산일에 자동으로 결산을 할지, 아닐지...



    전월 결산 테이블이 없을때, 어떻게 이전월 결산을 관리할지...



    가령 유저가 어떤 이유로 두달간 프로그램을 실행시키지 않을수도 있자나여.. ㅠㅠ



    어느 누구처럼.. "그럴리가 없다.."라구 그냥 넘어가지 마세여..ㅠㅠ



    프로그램은 어떠한 경우에도 안정되게 실행되어야 하자나여..



    고수님덜은 어떻게 하는지 궁금하네여..ㅠㅠ



  • Profile
    parkisu 2000.07.19 09:36
    타락천사 wrote:

    > 안녕하세여. 타락임다..^^

    >

    > 저두 다른분덜은 어케 처리하는지 궁금하군여..^^

    >

    > 저 가튼 경우는 시간 가튼 경우는 yymmddhhmm나 hhmm 식으로 스트링으로 저장해서>

    > 근데 고민되는게, 결산을 자동으로 할지 수동으로 할지..

    >

    > 매월 결산일에 자동으로 결산을 할지, 아닐지...

    >

    > 전월 결산 테이블이 없을때, 어떻게 이전월 결산을 관리할지...

    >

    > 처리하거든여.. 이건 문제 없는데...

    >

    > 글구, 전월결산 가튼것두 결산 테이블을 따르 만들어서 읽는 식으로 하거든여..



    >

    > 가령 유저가 어떤 이유로 두달간 프로그램을 실행시키지 않을수도 있자나여.. ㅠㅠ

    >

    > 어느 누구처럼.. "그럴리가 없다.."라구 그냥 넘어가지 마세여..ㅠㅠ

    >

    > 프로그램은 어떠한 경우에도 안정되게 실행되어야 하자나여..

    >

    > 고수님덜은 어떻게 하는지 궁금하네여..ㅠㅠ

    >



    반갑습니다. 타락천사님의 이름을 자주 보는군요.



    전 고수가 아니구요 초보이구요.(초보라서 죄숑~)

    저도 타락천사님같이 스트링형으로 처리합니다. 날짜는 yyyy/mm/dd로 시간은 hh:mm:ss식으로 말이죠. 근무시간처리같은 경우에 좀 까다로운 점이 있더라구요.

    그리구 타락천사님께서 말씀하신 전월결산의 경우는...

    기본적으로 옵션을 둬서 자동/수동 모두 쓸 수 있게 해주구요.

    ini나 레지스트리같은데다 마지막 결산일을 기록해 두었다가 프로그램실행시에 불러와서 쓰면 어떨까요? 한두달쯤 결산을 빼먹었으면 메세지를 보여준 후, 중간결산을 하겠다고 하면 시스템날짜를 뒤로 돌려서 결산안된 부분을 처리할 수 있게 해주면 어떨런지요.

    근데 중간에 넘 많이 빼먹은 경우는 어찌해야할지 모르겠군요.(교육을 잘 시켜야하나~)



    초보라 정확한 이야기가 아닐지도 모르겠군요.

    그냥 다른 분들의 이야기가 궁금했거든요.

    담에 또 뵙기를...

    • tommy
    • 2000.07.18 22:29
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 이발사
      2000.07.22 19:55
      tommy wrote: > > select hbuseoname from cc_buseo //부서코드테이블 > > hbuseoname //...
    • 타락천사
      2000.07.19 07:37
      안녕하세여.. 타락임다..^^ 시간이 널널하니까 이런 답변두 하는군여..^^;;; 퀵리포트로 되져..^^ ...
    • 하얀까마귀
      2000.07.18 22:33
      안녕하세요 하얀까마귀 입니다.. 음.. 전에 답변을 올렸던 내용하고 비슷한것 같은데... 19227번인데...
    • 델초...
    • 2000.07.18 22:22
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 어린왕자
      2000.07.19 00:47
      델초... wrote: > 안녕하십니까?....델 고수님들....허구한날 질문만 해대는 델초입니다... > 요번껀요.....
    • 타락천사
      2000.07.19 07:13
      안녕하세여.. 타락임다..^^ 저두 초본데여..ㅠㅠ ADO 는 ODBC를 사용할수 있게 합니다... ADO가 O...
    • 최연수
    • 2000.07.18 21:57
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 하얀까마귀
      2000.07.18 22:26
      안녕하세요 하얀까마귀 입니다.. 소스를 보야 정확히 파악을 하겠지만.. 지금 말씀하신건 아마 상호참조...
    • 최연수
      2000.07.18 23:19
      네.. 상호 참조 때문이었나 봅니다. 그런데 상호 참조 할수 밖에 없었다고 생각했습니다. FormC는 인쇄...
    • 하얀까마귀
      2000.07.19 01:13
      안녕하세요 하얀까마귀 입니다.. 음... 폼도 클래스거든요?? 아니.. 이건 그냥 넘어가구요.. 출력이 ...
    • 김윤아
    • 2000.07.18 21:45
    • 1 COMMENTS
    • /
    • 0 LIKES
    • Black}{ole
      2000.07.18 21:56
      김윤아 wrote: > TListView에서 Item갯수가 많은데도 > 수직 스크롤바가 안보이는데..어떻게 하면 되는거...
    • 김유중
    • 2000.07.18 21:28
    • 4 COMMENTS
    • /
    • 0 LIKES
    • 발걸음...
      2000.08.08 03:10
      김유중 wrote: > 안녕하세요. 김유중이라고 합니다. > 제가 문의 드리는 내용은 단순한 날짜형, 시간형 ...
    • 발걸음...
      2000.08.08 03:10
      김유중 wrote: > 안녕하세요. 김유중이라고 합니다. > 제가 문의 드리는 내용은 단순한 날짜형, 시간형 ...
    • 타락천사
      2000.07.19 07:01
      안녕하세여. 타락임다..^^ 저두 다른분덜은 어케 처리하는지 궁금하군여..^^ 저 가튼 경우는 시간 가...
    • parkisu
      2000.07.19 09:36
      타락천사 wrote: > 안녕하세여. 타락임다..^^ > > 저두 다른분덜은 어케 처리하는지 궁금하군여..^^ >...
    • 궁금궁금
      2000.07.18 21:53
      서버의 시간과 날짜에는 이상이 없습니다. 그런데도 정확히 '08:59:59' 만큼 서버의 날짜에서 빼줍니다......
    • 정지호
      2000.07.18 23:18
      궁금궁금 wrote: > 서버의 시간과 날짜에는 이상이 없습니다. > 그런데도 정확히 '08:59:59' 만큼 서버의...
    • Black}{ole
      2000.07.18 21:47
      호야 wrote: > 여섯개의 서브폼에 각각 스트링그리드가 있습니다. > 메인폼에서 삽입이라는 버튼을 눌렀...
    • 호야
    • 2000.07.18 20:38
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 정지호
      2000.07.18 20:26
      호야 wrote: > 스트링그리드에서 오른쪽클릭시 스트링그리드의 Row를 > 알고 싶은데 어떻게 해야하나요?...
    • 김만업
    • 2000.07.18 19:18
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 타락천사
      2000.07.18 19:55
      ^^;;
    • heimdal
      2000.07.18 20:27
      타락천사 wrote: > ^^;; 날짜로 검색을 할려구 디비룩업콤보를 사용했습니다.. 디비에 오늘날짜로 되...
    • 박상길
    • 2000.07.18 19:16
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 송종영
      2000.07.22 01:45
      이렇게 해도 안돼냐요? If (MediaPlayer1.NotifyValue = nvSuccessful) and (MediaPlayer1.Mode = mpSt...
    • 델초김
    • 2000.07.18 11:25
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 타락천사
      2000.07.18 19:53
      안녕하세여.. 타락임다..^^ 흠..애니메이션은 글케 하면 안되여... 우선 화면도 느리구 그림이 깜빡...
    • 델초김
      2000.07.30 03:57
      타락천사 wrote: > 안녕하세여.. 타락임다..^^ > > 흠..애니메이션은 글케 하면 안되여... > > 우선...
    • 박계원
    • 2000.07.18 11:14
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 모질이
      2000.08.26 18:56
      저도 잘은 모르지만 몇자 적어 봅니다.. usb에 대한 자료는 usb.org에 있고요... 근데 거기에는 table...
    • 정지호
      2000.07.18 18:51
      강민우 wrote: > 실행파일을 만들어서.. 다른 컴퓨터에서 테스트를 해보는데.. > 델파이 4가 깔린 컴퓨터...
    • 타락천사
      2000.07.18 20:03
      안녕하세여..타락임다..^^ 전 고수가 아니지만....ㅠㅠ 런타임에러니까 실행파일이 담긴 또는 필요한...
    • 구창민
      2000.07.18 21:01
      안녕하세요? 구창민입니다. 고수는 아니구요..^^;;; 말씀을 듣고 해보니, 사실이더군요. 아래코드...
    • 화니
    • 2000.07.18 05:53
    • 1 COMMENTS
    • /
    • 0 LIKES
    • WebKing
      2000.07.18 06:59
      화니 wrote: > 안녕하십니까...여기서 좋은 정보 많이 얻고 있습니다 > > 제가 남의 짜논것을 받아서 ...