在我的數據庫中,我有一個類型爲varchar(8)的日期字段,我用它來存儲格式爲YYYYMMDD的日期值。我有困難創建一個簡單的CR式顯示在以下格式的時間範圍:水晶報表中優雅的字符串日期(範圍)轉換
2012年10月1日到2012年10月31日
這是我的當前和非常缺乏吸引力CR式:
stringvar yYear;
stringvar mMonth;
datevar OrigDate;
numbervar StartDay;
stringvar EndDay;
yYear := Mid ({Command.Date}, 1, 4);
select Mid ({Command.Date}, 5, 2)
case "01": mMonth:= "January"
case "02": mMonth:= "Februry"
case "03": mMonth:= "March"
case "04": mMonth:= "April"
case "05": mMonth:= "May"
case "06": mMonth:= "June"
case "07": mMonth:= "July"
case "08": mMonth:= "August"
case "09": mMonth:= "September"
case "10": mMonth:= "October"
case "11": mMonth:= "November"
case "12": mMonth:= "December";
OrigDate := CDate(ToNumber({Command.Date}[1 to 4]), ToNumber({Command.Date}[5 to 6]), ToNumber({Command.Date}[7 to 8]));
StartDay := ToNumber({Command.Date}[7 to 8]);
EndDay := Mid(ToText(DateSerial(Year(OrigDate), Month(OrigDate) +1, 1-1)), 4, 2);
mMonth + " " + ToText(StartDay, "#") + ", " + yYear + " to " + mMonth + " " + EndDay + ", " + yYear
這樣做很有效,但本着可維護性和良好/乾淨編碼實踐的精神,如果可能的話,我想簡化這個功能。
我相對較新的水晶書面報告,所以我希望我沒有「重新發明輪子」。
謝謝瑞恩。我知道必須有一個更簡單的解決方案。過度思考的危險...... – 8thWonder