Crystal Reports for Rational Application Developer 設計工具指南

DateSerial (年, 月, 日)

典型用法
DateSerial 可以取代 「CDate」「DateValue」 根據年、月、日來建立日期值。
DateSerial 很有用的一項功能是月引數不必在 1 與 12 之間,日引數也不必在每月日數的有效範圍內。DateSerial 會將這樣的日期解譯為相對日期,一樣能產生有效的日期值。這可用來執行許多涉及日期的計算,而不須檢查諸如年底、閏年與每月日數等特殊狀況。以下示範一些典型的應用範例。
範例
DateSerial (1999, 6, 15)
DateSerial (2000, 1 - 7, 15)
DateSerial (1999, 1, 166)
這三個函式都會傳回日期 1999 年 6 月 15 日。第二個函式指出 2000 年 1 月 1 日以前 7 個月是 1999 年 6 月 15 日。第三個函式則指出 1999 年的第 166 天是 1999 年 6 月 15 日。
DateSerial (1996 + 12, 2 + 13, 29 + 14)
傳回 2009 年 4 月 12 日。這表示從 1996 年 2 月 29 日起 12 年 13 個月又 14 天,也就是 2009 年 4 月 12 日。
假設要計算 {訂貨主檔.訂貨日期} 日期時間欄位中每個月的最後一天。請注意,計算中的 DateSerial(Year(d), Month(d) + 1, 1) 是指 {訂貨主檔.訂貨日期} 之後下一個月的第一天,然後減去一天,就得到所要的結果:
Local DateTimeVar d := {Orders.Order Date};
DateSerial(Year(d), Month(d) + 1, 1 - 1)
DateSerial 多半會與其他日期函式合在一起使用。例如,如果要計算 {訂貨主檔.訂貨日期} 欄位中每個月最後一個星期五的日期,可以利用下列方式得出。
計算方式是先找出每個月的最後一天,然後減去幾天,以得出星期五。因為有些月份有 5 個星期五 (例如:1999 年 10 月),而有些有 4 個星期五 (例如:1999 年 11 月),這種方法會比從月份的第一天開始計算來得簡單。
Local DateTimeVar d1 := {Orders.Order Date};
Local DateVar d2;
d2 := DateSerial(Year(d1), Month(d1) + 1, 1 - 1);
d2 - (DayOfWeek(d2, crFriday) - 1)
如果 {訂貨主檔.訂貨日期} 是 March 18, 1998,則傳回日期值 March 27, 1998。
以下範例會傳回 {訂貨主檔.訂貨日期} 的前 3 個月那個月裏第二個星期二的日期:
Local DateTimeVar d1 := {Orders.Order Date};
Local DateVar d2 := DateSerial(Year(d1), Month(d1) - 3, 1);
d2 + (2 * 7 - (DayOfWeek(d2, crTuesday) - 1))
如果 {訂貨主檔.訂貨日期} 是 March 18, 1998,則傳回日期值 December 9, 1997。



Business Objects, SAP 子公司
http://www.taiwan.businessobjects.com/
支援服務
http://www.taiwan.businessobjects.com/support/
產品說明文件網站
http://support.businessobjects.com/documentation/