日時式は Date や Duration 値を使用して、DateTime、Date、Time、Duration、Number 値を生成します。
以降のセクションでは、日時式を構築するためのコンポーネントについて説明します。
現在日時の関数
NOW(): ユーザーのデバイスの現在のDateTime。TIMENOW(): ユーザーのデバイスの現在のTime。TIME(NOW())に相当します。関連情報:TIME()TODAY(): ユーザーのデバイスの現在のDate。DATE(NOW())に相当します。関連情報DATE()UTCNOW(): 協定世界時(UTC)での現在のDateTime。
NOW()、TODAY()、TIMENOW() から返される値には、ユーザーのデバイスのタイムゾーン オフセットが反映されます。たとえば、ユーザーのデバイスのタイムゾーンが太平洋標準時(PST)の場合、返される値は UTC-08:00 であり、ユーザーのデバイスのタイムゾーンが香港の場合、返される値は UTC+8:00 です。
ユーザーのデバイスは、データの読み取りまたは更新のためにサーバーにアクセスするときに、リクエストにそのタイムゾーンを組み込みます。サーバーは日付と時刻を計算するときにユーザーのデバイスのタイムゾーンを使用します。たとえば、日時を含むセキュリティ フィルタとワークフロー ルールをサーバーが評価する場合などです。
モバイル デバイスの言語 / 地域設定やブラウザの言語設定が返される値の形式にどのように影響するかについては、Date、Time、DateTime 形式を使用するアプリに関する考慮事項をご覧ください。
時間コンポーネント関数
EXTRACTDURATIONS(): テキスト値に含まれるDuration値のリストの抽出。EXTRACTTIMES(): テキスト値に含まれるTime値のリストの抽出。HOUR(): 特定のDurationの時間コンポーネント。MINUTE(): 特定のDurationの分コンポーネント。SECOND(): 特定のDurationの秒コンポーネント。TIME():Date、DateTime、TimeのいずれかのTime。TOTALHOURS():Durationの総時間数。TOTALMINUTES():Durationの総分数。TOTALSECONDS():Durationの総秒数。
HOUR()、MINUTE()、SECOND() はそれぞれ、Time 値ではなく、Duration 値を入力として受け取ることに注意してください。Time 値を Duration 値に変換するには、別の Time 値を減算します。たとえば、現在の時間帯を Duration に変換するには、TIMENOW() - "00:00:00" のように記述します。
日付コンポーネント関数
DATE():Date、DateTime、TimeのいずれかのDate。DATETIME():Date、DateTime、TimeのいずれかのDateTime。DAY():Dateの日情報。EOMONTH(): 各月の長さと閏年を考慮して、指定した月数後の月の最終日を計算します。EOWEEK():DateまたはDateTimeが含まれる週の最終日を計算します。EWOMONTH():Date値やDateTime値により特定された月の最後の平日(月曜日から金曜日)の日付を計算します。EXTRACTDATES(): テキスト値内のDate値のリストを抽出します。EXTRACTDATETIMES(): テキスト値内のDateTime値のリストを抽出します。ISOWEEKNUM():DateまたはDateTimeの ISO 週番号。MONTH():Dateの月番号。WEEKDAY():Dateの曜日番号。日曜日は1、土曜日は7です。WEEKNUM():Dateの週番号。週は日曜始まりで計算されます。WORKDAY(): 週末やその他の指定された日を除外した、指定された日数後の日付を返します。YEAR():Dateの年。
AppSheet では、"MM/DD/YYYY" などの一部の定数値は Date 値として評価されます。同様に、"000:00:00" は Duration 値として評価されます。ただし、スプレッドシートのデータを同じ形式にする必要はありません。スプレッドシートの日付と時刻の形式は、ロケールと言語の設定によって決まります。Column は常に列型として評価されます。また、DATE()、TIME()、DATETIME() などの関数を使用すると、データ、両方の列、文字列リテラルを特定の型に変換できます。
日時をテキストとしてフォーマットする
TEXT()はDateTime、Date、Timeと形式文字列を受け取り、テキスト表現を返します。
レガシー演算子
後方互換性のために、初期の AppSheet のリリースからサポートされている以下の関数構文もサポートしています。
例
Dates を計算する例
TODAY() + 1: 現在のDateに 1 日(Number)を加算します。TODAY() - 3: 現在のDateから 3 日(Number)を減算します。[StartDate] + 7:StartDate(Date)に 7 日(Number)を加算します。TODAY() - (WEEKDAY(TODAY()) - 1): 前の日曜日の日付。TODAY() - (WEEKDAY(TODAY()) - 2): 前の月曜日の日付。
Times を計算する例
TIMENOW() + 1: 現在のTimeに 1 時間(Number)を加算します。TIMENOW() + "003:03:00": 現在のTimeに 3 時間 3 分(Duration)を加算します。TIMENOW() - "003:03:00": 現在のTimeから 3 時間 3 分(Duration)を減算します。
DateTimes を計算する例
NOW() + 1: 現在のDateTimeに 1 日(Number)を加算します。NOW() - 3: 現在のDateTimeから 3 日(Number)を減算します。[TargetDateTime] + "012:59:00":DateTime値に 12 時間 59 分(Duration)を加算します。[TargetDate] + ([TargetTime] - "00:00:00"):Date値とTime値からDateTime値を作成します。
Durations を計算する例
TIMENOW() - "12:30:00": 現在のTimeと午後 12:30(Time)の間のDuration。NOW() - "03:15:30": 現在のTimeと 1899 年 12 月 30 日(何も指定されていない場合は、デフォルトでDate)午前 3:15:30(Time)の間のDuration。TODAY() - "12/30/2001": 現在のDateと 2001 年 12 月 30 日(Date)の間のDuration。[EndDate] - [StartDate]:StartDate(Date)の午前 0 時とEndDate(Date)の午前 0 時の間のDuration。IF(([StopWhen] > [StartWhen]), ([StopWhen] - [StartWhen]), (([StopWhen] + 24) - [StartWhen])):StartWhenとStopWhen(2 つのDateTime値)の間のDuration。IF()もご確認ください。
Days、Months、Years で Durations を計算する例
HOUR(TODAY() - [TargetDate]) / 24: 今日の日付とTargetDate列に指定したDate値の間の日数。((YEAR([EndDate]) - YEAR([StartDate]))): 開始日と終了日の間の年数。((((YEAR([EndDate]) - YEAR([StartDate])) * 12) + MONTH([EndDate])) - MONTH([StartDate])): 開始日と終了日の間の月数。
Dates、Times、DateTimes を比較する例
(TODAY() - [When]) = 7:When列値のDateまたはDateTime値が、今日のDateのちょうど 7 日前かどうかを示すYes/No値。(EOMONTH([When], 0) = EOMONTH(TODAY(), 0)):When列値のDateまたはDateTime値が今日の日付と同じ月に含まれるかどうかを示すYes/No値。関連情報:EOMONTH(),TODAY()([When] - TODAY()) = 7:When列値のDateまたはDateTime値が今日のDateのちょうど 7 日後かどうかを示すYes/No値。-
AND([OrderDateTime] >= [StartDateTime], [OrderDateTime] <= [EndDateTime]):OrderDateTime列のDateTime値がStartDateTimeとEndDateTime列値の間にあるかどうかを示すYes/No値。関連情報:AND() AND([OrderDate] >= [StartDate], [OrderDate] <= [EndDate]):OrderDate列のDate値がStartDateとEndDate列値の間にあるかどうかを示すYes/No値。関連情報:AND()AND(([When] >= (TODAY() - 7)), ([When] <= TODAY())):When列のDateまたはDateTime値が過去 7 日以内かどうかを示すYes/No値。関連情報:AND()TODAY() > ([TargetWhen] + 1):TargetWhen列のDateまたはDateTime値が過去 1 日よりも前かどうかを示すYes/No値。[Timestamp] > (NOW() - 1):Timestamp列のDateTime値が現在の日時から 24 時間以内かどうかを示すYes/No値。[OrderDateTime] >= (NOW() - "001:30:00")OrderDateTime列のDateTime値が現在のDateTimeから 1 時間 30 分以内かどうかを示すYes/No値。-
IN(MINUTE([_THIS] - "00:00:00"), LIST(0, 15, 30, 45)): 現在の列のDateTime値またはTime値が 15 分刻みの時刻(つまり、0 分、15 分、30 分、45 分)に当たるかどうかを示すYes/No値。関連情報:IN()、LIST()
スケジューリングの例
-
AND((TODAY() >= DATE("01/01/2021")),: スケージュールされた定期イベントの
(TODAY() <= DATE("12/31/2021")),
(MOD(HOUR(TODAY()- DATE("01/01/2021"))/24, 15) = 0))Yes/No値。1 行目のDATE値はスケージュールされた定期イベントの開始日を指定します。2 行目のDATE値はスケージュールされた定期イベントの最終日を指定します。3 行目のDATE値はスケージュールされた定期イベントが最初にトリガーされる日付を指定します。通常、1 行目と 3 行目のDATE値は同じはずですが、3 行目に少し遅いDATE値を指定することで、少し遅い日付でスケージュールされた定期イベントをトリガーすることもできます。3 行目の値 15 は、3 行目で指定したDateから 15 日毎にスケージュールされた定期イベントをトリガーすることを指定します。