1

これは私が持っているクエリです。

<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# より小さいすべての結果を得ることができます。唯一の問題は、差が 1 日である結果のみを表示し、差が分である結果を表示しないことです。したがって、expdatetime の差が分単位で #yourtime# 未満である場合、差が少なくとも 1 日ない限り、結果には表示されません。

このクエリを最小精度で最適化するにはどうすればよいですか?

DateDiff と DateCompare の 2 つの関数が役立つ可能性があることは知っていますが、それらをクエリに適用する方法がわかりません。

DateDiff("datepart", "date1", "date2")

DateCompare("date1", "date2" [, "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

どんな助けでも大歓迎です。

4

3 に答える 3

6

を使用してみてくださいCF_SQL_TIMESTAMP

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

maxlength属性が必要かどうかはわかりません。必要な精度を得るには、CF マッピングをタイムスタンプにする必要があることがわかりました。

于 2010-06-28T09:32:12.470 に答える
1

mysql関数timestampdiffは必要なことを実行する必要があります

TIMESTAMPDIFF(unit,datetime_expr1,datetime_expr2)

単位値はMINUTEまたはDAYである必要があります

于 2010-06-28T03:52:15.047 に答える
0

私自身も MS-SQL を使用していますが、DateDiff 関数を使用して、結果が正か負かゼロかを計算すると、必要な情報がわかります。

しかし、なぜこれを行う必要があるのか​​ わかりません。IS LESS THAN テストは必要な結果を生成する必要があります。#yourDate# 変数が十分に具体的でない場合、つまり時間が含まれていない場合、時間は 00:00:00 として解釈されます。これは結果をゆがめます。#yourDate# のデータができるだけ具体的であることを確認することをお勧めします。

于 2010-06-28T07:09:07.067 に答える