Crystal Reports for Rational Application Developer 设计员指南

DateSerial (year, month, day)

典型用法
DateSerial 可以代替 “CDate” “DateValue” 用于从某个年、月和日中创建一个日期值。
DateSerial 的一个非常有用的功能是:month 参数不必是从 1 到 12 的数字,day 参数不必在某月的有效天数范围内。这样的日期可以理解为相对日期,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 个月的月份中的第 2 个星期二的日期:
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.china.businessobjects.com/
支持服务
http://www.china.businessobjects.com/support/
Web 上的产品文档
http://support.businessobjects.com/documentation/