具有日期和時間變數的算術運算

大部分日期和時間變數會在內部儲存為特定日期的秒數或時間間隔,因此可以在算術運算中使用。 使用廣泛的 日期和時間函數集合,可以完成許多涉及日期和時間的作業。

  • 日期 是一個浮點數字,代表從 1582 年 10 月 14 日午夜開始的秒數。 日期 (代表特定時間點) 會儲存為該日期的秒數。 例如, 2007 年 10 月 28 日,儲存為 13,412,908,800。
  • 日期包括一天中的時間,即午夜之後的時間間隔。 如果未提供日期時間,則會將它視為 00:00 ,且日期是 86,400 (一天中的秒數) 的偶數倍數。
  • 時間間隔 是一個浮點數字,代表時段內的秒數,例如小時、分鐘或日。 例如,代表 5.5 天的值為 475,200; 代表時間間隔 14:08:17 的值為 50,897。
  • QYRMOYRWKYR 變數會儲存為個別季度、月及週的第一天午夜。 因此, 1 Q 901/901 WK 90 都是 1990 年 1 月 1 日 0:0:00 的對等項目。
  • WKDAY 變數會儲存為 1 到 7 , MONTH 變數會儲存為 1 到 12。

您可以使用日期格式和時間格式變數來執行幾乎任何算術運算。 當然,並非所有這些行動都特別有用。 您可以計算兩個日期之間的天數,方法是從另一個日期減去一個日期-但加上兩個日期並不會產生非常有意義的結果。

依預設,您計算的任何新數值變數都會以 F 格式顯示。 在涉及時間和日期變數的計算情況下,這表示預設輸出以秒數表示。 使用 FORMATS (或 PRINT FORMATS) 指令,為計算變數指定適當的格式。

範例

DATA LIST FREE /Date1 Date2 (2ADATE10).
BEGIN DATA
6/20/2006 10/28/2006
END DATA.
COMPUTE DateDiff1=(Date2-Date1)/60/60/24.
COMPUTE DateDiff2=DATEDIFF(Date2,Date1, "days").
COMPUTE FutureDate1=Date2+(10*60*60*24).
COMPUTE FutureDate2=DATESUM(Date2, 10, "days").
FORMATS FutureDate1 FutureDate2 (ADATE10).
  • 前兩個 COMPUTE 指令都計算兩個日期之間的天數。 在第一個日期中, Date2-Date1 會產生兩個日期之間的秒數,然後會除以一分鐘內的秒數、一小時內的分鐘數及一天內的小時數,以轉換為天數。 在第二個函數中, DATEDIFF 函數用來取得相等結果,但它只包含 "days"引數,而不是用來產生以天表示之結果的算術公式。
  • 第二對 COMPUTE 指令都計算從 Date2開始 10 天的日期。 在第一個日期中, 10 天需要轉換為 10 天內的秒數,才能將它新增至 Date2。 在第二個函數中, DATESUM 函數中的 "days" 引數會處理該轉換。
  • FORMATS 指令是用來將第二個兩個 COMPUTE 指令的結果顯示為日期,因為預設格式是 F ,這會將結果顯示為 1582 年 10 月 14 日以來的秒數。

如需日期和時間函數的相關資訊,請參閱 日期和時間函數

條件式陳述式及基於日期的觀察值選擇

若要將日期指定為條件式陳述式中的值,請使用其中一個資料聚集函數來表示日期值。 例如,

***this works***.
SELECT IF datevar >= date.mdy(3,1,2006).
***the following do not work***.
SELECT IF datevar >= 3/1/2006. /*this will select dates >= 0.0015.
SELECT IF datevar >= "3/1/2006" /*this will generate an error.

如需相關資訊,請參閱主題 總計函數