DateDiff

説明

date2 から date1 を引いた値の単位数を整数で取得します。

戻り値

タイプ datepart の単位数

関数のシンタックス

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

履歴

ColdFusion MX:

  • 日付の差が負の数の場合の計算方法が変更されました。この関数では、日付の差が負の数になった場合も正しく計算できるようになりました。出力は以前のリリースとは異なる場合があります。

  • w マスクおよび ww マスクが変更されました。2 つの日付の間が丸何週間かを求めます。

パラメータ

パラメータ

説明

datepart

どの単位で数えるかを指定する文字列です。たとえば、yyyy と指定すると、日付の差が丸何年かを求めます。

  • yyyy: 年

  • q: 四半期

  • m: 月

  • y: 年間通算日 (d と同じ)

  • d: 日

  • w: 曜日 (ww と同じ)

  • ww: 週

  • h: 時

  • n: 分

  • s: 秒

date1

日付時刻オブジェクトです。値の範囲は西暦 100 ~ 9999 年です。

date2

日付時刻オブジェクトです。値の範囲は西暦 100 ~ 9999 年です。

使用方法

DateDiff 関数は、2 つの日付の間に datepart 単位でどれだけの差があるかを求めます。たとえば、datepart パラメータが "m" で、日付の差が 55 日の場合、この関数は 1 を返します。

日付の文字列定数は引用符で囲みます。数値のみのテキスト (たとえば 1932) を引用符で囲まずに指定した場合は、日付時刻オブジェクトとして解釈されるため、結果は誤った値となります。

<cfif IsDefined("form.value")> 
    <cfset value = form.value> 
</cfif> 
<cfif IsDefined("form.type")> 
    <cfset type = form.type> 
</cfif> 
 
<cfif IsDefined("form.date1") and IsDefined("form.date2")> 
 
    <cfif IsDate(form.date1) and IsDate(form.date2)> 
     
        <p>This example uses DateDiff to determine the difference 
        in  
        <cfswitch expression = "#form.type#"> 
            <cfcase value="yyyy">years</cfcase> 
            <cfcase value="q">quarters</cfcase> 
            <cfcase value="m">months</cfcase> 
            <cfcase value="y">days</cfcase>     
            <cfcase value="d">days</cfcase>     
            <cfcase value="w">weekdays</cfcase>     
            <cfcase value="ww">weeks</cfcase>     
            <cfcase value="h">hours</cfcase>     
            <cfcase value="n">minutes</cfcase>     
            <cfcase value="s">seconds</cfcase>         
            <cfdefaultcase>years</cfdefaultcase> 
        </cfswitch> 
             dateparts between date1 and date2. 
         
        <cfif DateCompare("#form.date1#","#form.date2#") is not 0> 
        <p>The difference is <cfoutput>#Abs(DateDiff(type, form.date2, form.date1))#</cfoutput> 
        <cfswitch expression = "#form.type#"> 
            <cfcase value="yyyy">years</cfcase> 
            <cfcase value="q">quarters</cfcase> 
            <cfcase value="m">months</cfcase> 
            <cfcase value="y">days</cfcase>     
            <cfcase value="d">days</cfcase>     
            <cfcase value="w">weekdays</cfcase>     
            <cfcase value="ww">weeks</cfcase>     
            <cfcase value="h">hours</cfcase>     
            <cfcase value="n">minutes</cfcase>     
            <cfcase value="s">seconds</cfcase>         
            <cfdefaultcase>years</cfdefaultcase> 
        </cfswitch>. 
        <cfelse> 
        <p>The two dates are equal!Try changing one of the values ... 
        </cfif> 
     
    <cfelse> 
    <p>Please enter two valid date/time values, formatted like this: 
    <cfoutput>#DateFormat(Now())#</cfoutput>     
    </cfif>     
 
</cfif> 
<form action="index.cfm" method="post"> 
 
<pre> 
Date 1 
<input type="Text" name="date1" value="<cfoutput>#DateFormat(Now())#</cfoutput>"> 
Date 2 
<input type="Text" name="date2" value="<cfoutput>#DateFormat(Now())#</cfoutput>"> 
What kind of unit to show difference? 
    <select name="type"> 
        <option value="yyyy" selected>years 
        <option value="q">quarters 
        <option value="m">months 
        <option value="y">days of year 
        <option value="d">days 
        <option value="w">weekdays 
        <option value="ww">weeks 
        <option value="h">hours 
        <option value="n">minutes 
        <option value="s">seconds 
    </select> 
</pre> 
 
<input type="Submit" name=""><input type="Reset"> 
</form>