@@ -168,16 +168,16 @@ public virtual void DateTimeExtractDayOfYearTest()
168168 public virtual void DateOnlyAddYearsTest ( )
169169 {
170170 CheckEquality (
171- SqlDml . DateAddYears ( DefaultDateOnly , AddYearsConst ) ,
172- DefaultDateOnly . AddYears ( AddYearsConst ) ) ;
171+ SqlDml . DateAddYears ( PrepareDateLiteral ( DefaultDateOnly ) , AddYearsConst ) ,
172+ PrepareDateLiteral ( DefaultDateOnly . AddYears ( AddYearsConst ) ) ) ;
173173 }
174174
175175 [ Test ]
176176 public virtual void DateOnlyAddMonthsTest ( )
177177 {
178178 CheckEquality (
179- SqlDml . DateAddMonths ( DefaultDateOnly , AddMonthsConst ) ,
180- DefaultDateOnly . AddMonths ( AddMonthsConst ) ) ;
179+ SqlDml . DateAddMonths ( PrepareDateLiteral ( DefaultDateOnly ) , AddMonthsConst ) ,
180+ PrepareDateLiteral ( DefaultDateOnly . AddMonths ( AddMonthsConst ) ) ) ;
181181 }
182182
183183 [ Test ]
@@ -192,71 +192,71 @@ public virtual void DateOnlyConstructTest()
192192 public virtual void DateOnlyExtractYearTest ( )
193193 {
194194 CheckEquality (
195- SqlDml . Extract ( SqlDatePart . Year , DefaultDateOnly ) ,
195+ SqlDml . Extract ( SqlDatePart . Year , PrepareDateLiteral ( DefaultDateOnly ) ) ,
196196 DefaultDateOnly . Year ) ;
197197 }
198198
199199 [ Test ]
200200 public virtual void DateOnlyExtractMonthTest ( )
201201 {
202202 CheckEquality (
203- SqlDml . Extract ( SqlDatePart . Month , DefaultDateOnly ) ,
203+ SqlDml . Extract ( SqlDatePart . Month , PrepareDateLiteral ( DefaultDateOnly ) ) ,
204204 DefaultDateOnly . Month ) ;
205205 }
206206
207207 [ Test ]
208208 public virtual void DateOnlyExtractDayTest ( )
209209 {
210210 CheckEquality (
211- SqlDml . Extract ( SqlDatePart . Day , DefaultDateOnly ) ,
211+ SqlDml . Extract ( SqlDatePart . Day , PrepareDateLiteral ( DefaultDateOnly ) ) ,
212212 DefaultDateOnly . Day ) ;
213213 }
214214
215215 [ Test ]
216216 public virtual void DateOnlyExtractDayOfWeekTest ( )
217217 {
218218 CheckEquality (
219- SqlDml . Extract ( SqlDatePart . DayOfWeek , DefaultDateOnly ) ,
219+ SqlDml . Extract ( SqlDatePart . DayOfWeek , PrepareDateLiteral ( DefaultDateOnly ) ) ,
220220 ( int ) DefaultDateOnly . DayOfWeek ) ;
221221 }
222222
223223 [ Test ]
224224 public virtual void DateOnlyExtractDayOfYearTest ( )
225225 {
226226 CheckEquality (
227- SqlDml . Extract ( SqlDatePart . DayOfYear , DefaultDateOnly ) ,
227+ SqlDml . Extract ( SqlDatePart . DayOfYear , PrepareDateLiteral ( DefaultDateOnly ) ) ,
228228 DefaultDateOnly . DayOfYear ) ;
229229 }
230230
231231 [ Test ]
232232 public virtual void TimeOnlyExtractHourTest ( )
233233 {
234234 CheckEquality (
235- SqlDml . Extract ( SqlTimePart . Hour , DefaultTimeOnly ) ,
235+ SqlDml . Extract ( SqlTimePart . Hour , PrepareTimeLiteral ( DefaultTimeOnly ) ) ,
236236 DefaultTimeOnly . Hour ) ;
237237 }
238238
239239 [ Test ]
240240 public virtual void TimeOnlyExtractMinuteTest ( )
241241 {
242242 CheckEquality (
243- SqlDml . Extract ( SqlTimePart . Minute , DefaultTimeOnly ) ,
243+ SqlDml . Extract ( SqlTimePart . Minute , PrepareTimeLiteral ( DefaultTimeOnly ) ) ,
244244 DefaultTimeOnly . Minute ) ;
245245 }
246246
247247 [ Test ]
248248 public virtual void TimeOnlyExtractSecondTest ( )
249249 {
250250 CheckEquality (
251- SqlDml . Extract ( SqlTimePart . Second , DefaultTimeOnly ) ,
251+ SqlDml . Extract ( SqlTimePart . Second , PrepareTimeLiteral ( DefaultTimeOnly ) ) ,
252252 DefaultTimeOnly . Second ) ;
253253 }
254254
255255 [ Test ]
256256 public virtual void TimeOnlyExtractMillisecondTest ( )
257257 {
258258 CheckEquality (
259- SqlDml . Extract ( SqlTimePart . Millisecond , DefaultTimeOnly ) ,
259+ SqlDml . Extract ( SqlTimePart . Millisecond , PrepareTimeLiteral ( DefaultTimeOnly ) ) ,
260260 DefaultTimeOnly . Millisecond ) ;
261261 }
262262
@@ -293,7 +293,7 @@ public virtual void TimeOnlyConstructTest2()
293293 public virtual void TimeOnlySubtractTimeOnlyTest ( )
294294 {
295295 CheckEquality (
296- SqlDml . TimeMinusTime ( DefaultTimeOnly , SecondTimeOnly ) ,
296+ SqlDml . TimeMinusTime ( PrepareTimeLiteral ( DefaultTimeOnly ) , PrepareTimeLiteral ( SecondTimeOnly ) ) ,
297297 DefaultTimeOnly - SecondTimeOnly ) ;
298298 }
299299#endif
@@ -381,5 +381,23 @@ private SqlExpression PrepareDateTimeLiteral(DateTime value)
381381 }
382382 return SqlDml . Literal ( value ) ;
383383 }
384+ #if NET6_0_OR_GREATER
385+
386+ private SqlExpression PrepareDateLiteral ( DateOnly value )
387+ {
388+ if ( StorageProviderInfo . Instance . CheckProviderIs ( StorageProvider . Firebird ) ) {
389+ return SqlDml . Cast ( SqlDml . Literal ( value ) , SqlType . Date ) ;
390+ }
391+ return SqlDml . Literal ( value ) ;
392+ }
393+
394+ private SqlExpression PrepareTimeLiteral ( TimeOnly value )
395+ {
396+ if ( StorageProviderInfo . Instance . CheckProviderIs ( StorageProvider . Firebird ) ) {
397+ return SqlDml . Cast ( SqlDml . Literal ( value ) , SqlType . Time ) ;
398+ }
399+ return SqlDml . Literal ( value ) ;
400+ }
401+ #endif
384402 }
385403}
0 commit comments