2008-09-17 3 views
3

시나리오 : 저장 프로시 저는 코드에서 DateTime.Now 값을 datetime 매개 변수로 사용하여 DateTime을받습니다. 저장 프로 시저에서는 행에 datetime의 날짜 부분 만 저장해야하지만 모든 날짜 관련 산술은 시간 간격에 따라 검색하고 날짜를 기반으로하는 보고서를 보존해야합니다.날짜/시간 필드에만 날짜를 저장하는 가장 좋은 방법은 무엇입니까?

두 가지 방법이 있지만 성능과 낭비되는 공간을 더 잘 나타내는 것은 무엇입니까?

+0

사용중인 데이터베이스를 알려주십시오. – Brettski

+0

죄송합니다, 그것은 SQL Server 2005의 태그는 tsql, 충분히 될 것이라고 생각> _ < –

답변

4

비즈니스 로직은 외부에서 처리해야합니다. procs 작업은 전달 된 데이터를 저장해야합니다. 요구 사항이 시간이 아닌 Date 만 저장하면 BL/DL은 DateTime.Now **. Date ** (또는 equiv ... 기본적으로 DateTime 객체의 Date 부분)에 전달됩니다. 항상 변환 것

당신이 어떤 이유에 대한 코드를 제어 할 수없는 경우 (VARCHAR (10), @YOURDATETIME, 101)

+0

필자는 제작 코드에서 작동한다고 덧붙일 수 있습니다. VbNet에서는 "_variable = value.Date"라고 말하여 날짜 만 수신하도록 DateTime 형식의 모든 setter를 수정 한 다음 데이터베이스에서 날짜와 시간대를 정상적으로 전파했습니다. 감사! –

0

저장 시간 = 자정에 날짜

편집 : 내가

+0

그것은 태그가 tsql입니다. 답변 해주셔서 감사합니다. –

0

MS SQL 서버를 가정 한은 기본적으로 당신은 당신 DateTime 개체의 날짜 부분을 저장하는 것입니다. 즉, 데이터 쿼리를 처리하는 방법에 관계없이 반환 된 날짜는 항상 00:00:00으로 설정됩니다.

데이터베이스가이 정보를 삭제할 때 시간 관련 함수는이 시나리오에서는 유용하지 않습니다 (원래 DateTime 개체가 사용하더라도).

데이터베이스에서 반환 된 각 날짜의 자정 시간을 가정해야하지만 날짜 관련 산술은 여전히 ​​적용됩니다.

0

은 저장 프로 시저 내부의 날짜에 TRUNC 함수를 사용합니다. 그러면 날짜 부분 만 반환됩니다.

관련 문제