2010-06-28 1 views
1

이것은 내가 가지고있는 쿼리입니다.ColdFusion에서 DateTime 값을 Min이 아닌 Day로 비교 CFQUERY

<cfquery name="qryname" datasource="dsn"> 
UPDATE ticketlist 
SET status = <cfqueryparam cfsqltype="CF_SQL_VARCHAR" value="Expired"> 
WHERE expdatetime < 
<cfqueryparam value = "#yourDate#" cfsqltype = "CF_SQL_DATE" maxLength = "19"> 
</cfquery> 

그것은 나에게 expdatetime # 개 yourdate 번호 미만의 모든 결과를 제공 할 수있는, 유일한 문제는 그것이 단지 나에게 차이는 전체의 날의 결과를 보여주고 있다는 것입니다,하지만 차이에 아니에요 그 사람 분. 그래서, 차이가있는 사람의 expdatetime은 차이가 적어도 하루가 아니라면, 결과에 # yourtime # min만큼 표시되지 않습니다.

어떻게이 쿼리를 최소 정밀도로 최적화 할 수 있습니까?

DateDiff & DateCompare는 사용할 수있는 두 가지 기능을 알고 있지만 쿼리에 적용하는 방법을 모르겠습니다.

참조 DateDiff ("날짜 부분", "날짜 1", "날짜 2")

DateCompare ("날짜 1", "날짜 2"[ "날짜 부분"])

DATEPART 정밀

* s Precise to the second 
* n Precise to the minute 
* h Precise to the hour 
* d Precise to the day 
* m Precise to the month 
* yyyy Precise to the year 

도움이 될 것입니다.

답변

6

시도, 즉 : 당신이 maxlength 속성을해야하는 경우

<cfqueryparam value = "#yourDate#" cfsqltype = "CF_SQL_TIMESTAMP"> 

는 잘 모르겠어요. 필자는 CF 매핑이 필요한 정밀도를 얻기 위해 타임 스탬프 여야 함을 발견했습니다.

+2

나는 이것이 정확하다고 믿습니다. CF_SQL_DATE를 사용하면 시간 정보가 없어지기 때문에 데이터베이스 서버가 비교해야하는 것은 날짜 정보입니다. 따라서 그것이 될 수있는 가장 정확한 것은 하루입니다. 시간 정보를 포함하면 계산시이를 사용합니다. –

+0

이로써 해결되었습니다. 대단히 감사합니다! – Nich

1

MySQL의 기능 timestampdiff

TIMESTAMPDIFF(unit,datetime_expr1,datetime_expr2) 

는 단위 값은 분 DAY 나는 MS-SQL 사람에게 자신을 생각

+0

이 또한 작동했습니다. 리 감사합니다. – Nich

0

해야 필요하지만, 참조 DateDiff 함수를 사용하고 있는지 계산 어떻게해야 결과가 양수, 음수 또는 0 인 경우 필요한 정보를 알려줘야합니다.

하지만 왜 이렇게해야하는지 잘 모르겠습니다. IS less test는 필요한 결과를 만들어 내야합니다. # yourDate # 변수가 충분히 구체적이지 않은 경우, 즉 시간을 포함하지 않으면 시간이 00:00:00으로 해석되고, 결과가 왜곡 될 것입니다. # yourDate #의 데이터가 최대한 구체적인지 확인하는 것이 좋습니다. CF_SQL_TIMESTAMP를 사용

관련 문제