【Delphi】傳曰期參數到 MSSQL 的 StoredProc 注意事項

StoredProc 有 2 個日期參數, @date1@date2,假設要 StoredProc 整理統計 20072 月的資料 ----

var
    DateFormat: TFormatSettings;
    date1, date2: TDate;
begin
    // 避免每台電腦對日期設定不同
    // 所以要統一日期格式
    DateFormat.ShortDateFormat := 'yyyy/M/d';
    DateFormat.DateSeparator := '/';
    date1 := StrToDate(Edit1.Text+'/'+Edit2.Text+'/1');    // 2007/2/1
    date2 := StartOfTheDay(EndOfTheMonth(date1));          // 2007/2/28    ......
end;


EndOfTheMonth 傳回的是 2007/2/28 23:59:59.999, 而這個值傳入 MSSQL 卻會變成次日, 也就是 2007/3/1, 如此日期區間就不對, 抓的資料也跟著有錯.

所以要再藉著 StartOfTheDay 將取得 date2 的一開始, 也就是 2007/2/28 0:0:0 了. 吊詭吧...被這搞好久......