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 了. 吊詭吧...被這搞好久......
沒有留言:
張貼留言