2009-03-11 2 views
0

asp.net에서 calendarextender 컨트롤을 사용하고 있습니다. 시간이 아닌 날짜 만 표시합니다. 그러나 데이터베이스에 삽입하는 동안 시간이 자동으로 삽입됩니다. 데이터베이스에서 날짜를 사용하여 데이터를 검색하는 동안 조건은 없습니다. 이 문제를 해결하기 위해 storedprocedure에서 어떤 수정을 할 수 있습니까?Calendar Extender의 DateTime

+0

where 절에서 날짜 쿼리의 저장 프로 시저로부터 코드 스 니펫을 제공 할 수 있습니까? –

+0

사용중인 데이터베이스 버전에 대한 세부 정보를 제공 할 수 있습니까? –

답변

1

발생할 가능성이 가장 큰 문제는 2009 년 3 월 11 일과 같은 날짜를 찾는 경우 시간 스탬프 때문에 찾을 수 없을 것입니다. 당신이 strored 절차를 변경하는 데 사용할 수있는 몇 가지 방법은 날짜 범위를 고려하는 것입니다 : 문 간의이 포괄적 인 범위

Select myname,mydate from sometable 
    where mydate between 3/10/2009 and 3/11/2009 

또는

사용하여 당신에게 줄 것이다 사용

을>을 < 당신에게 독점 범위를 제공하는

Select myname,mydate from sometable 
    where mydate >3/10/2009 and mydate < 3/12/2009 

또는

,

DateAdd 기능을 활용하여 필드에서 시간을 제거하십시오. , 아니와 날짜를 당신이 테이블 자체를 변경하고 당신은 당신이 새로운 SQL 서버 2008 날짜 데이터 형식을 사용할 수있는 SQL Server 2008을 사용하는 경우이의 좋은 예는 SQLTeam Blog

dateadd(dd,0, datediff(dd,0,myDate)) 

또는 에있다 처리 할 시간 구성 요소. 새로운 Date and Time enhancements in SQL Server 2008에 대한 MSDN 블로그에 좋은 블로그가 있습니다.

삽입 절차 (해당되는 경우)를 살펴보고 시간을 제로로 줄일 수도 있습니다.

또한 datetime을 처리 할 때는 > = 및 < =을 고려해야하므로 레코드를 놓치지 마십시오.

희망 사항은 문제를 해결할 수있는 충분한 옵션을 제공합니다.

0

데이터베이스 날짜/시간 데이터 유형에는 날짜와 시간 만 포함되며 시간은 날짜 또는 시간 만 제공됩니다. '1/1/2011'로 날짜를 입력하면 1/1/2011 00:00:00 AM

으로 해석되며 선택한 쿼리에서 날짜와 시간을 비교하려고하기 때문에 실패합니다 (for 같은 날짜 사이의 인스턴스가

사용 중 일/월/년 구성 요소 절처럼 '2011 년 1 월 1 일 및 2011 년 1 월 1 일 사이에'. 즉, 또는 < 사용> 운영자 즉

select thisone from sometable where day(tabledate) between day(wheredate1) and day(wheredate2) 
    and month(tabledate) between month(wheredate1) and year(wheredate2) 
and year(tabledate) between year(wheredate1) and year(wheredate2) 

또는

select thisone from sometable where tabledate>=wheredate1 and tabledate<=wheredate1 

operator = 귀하가 포괄적 인 또는 독점적 인 검색을 사용하는 경우 적용