2010-06-28 4 views
1

Это запрос, который у меня есть.Сравните значения DateTime от Min, а не по дням в Coldfusion 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 # by min's, не будет отображаться в результатах, если разница не будет, по крайней мере, на один день.

Как оптимизировать этот запрос для минимальной точности?

Я знаю две функции, которые могут быть полезны, DateDiff & DateCompare, но я не знаю, как их применять в запросе.

DateDiff ("DatePart", "date1", "дата2")

DateCompare ("date1", "дата2" [ "DATEPART"])

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

CF_SQL_TIMESTAMP Попробуйте использовать, то есть:

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

Я не уверен, если вам нужен атрибут maxlength. Я обнаружил, что сопоставление CF должно быть меткой времени, чтобы получить требуемую точность.

+2

Я считаю, что это правильно. Используя CF_SQL_DATE, вы удаляете информацию о времени, поэтому все, что сервер базы данных должен сравнивать, - это дата; таким образом, наиболее точным может быть день. Если вы включите информацию о времени, то она будет использовать это в расчете. –

+0

Это решило это. Очень ценим! – Nich

1

для MySQL функция timestampdiff должна делать то, что вам нужно

TIMESTAMPDIFF(unit,datetime_expr1,datetime_expr2) 

стоимость единицы должна быть МИНУТЫ или ДЕНЬ

+0

Это также сработало, спасибо Ли. – Nich

0

Я MS-SQL парню сам, но с использованием функции DateDiff и расчета ли результат положительный, отрицательный или нулевой должен сообщить вам необходимую вам информацию.

Но, я не уверен, зачем вам это нужно. Тест IS LESS THAN должен давать нужные результаты, единственное, о чем я могу думать, - это если ваша переменная # yourDate # не является достаточно конкретной, то есть не включает время, тогда ваше время будет интерпретировано как 00:00:00, которые будут искажать ваши результаты. Я бы рекомендовал, чтобы данные в # yourDate # были как можно более конкретными.

 Смежные вопросы

  • Нет связанных вопросов^_^