@@ -18,6 +18,18 @@ namespace Xtensive.Sql.Drivers.SqlServer.v09
18
18
{
19
19
internal class Compiler : SqlCompiler
20
20
{
21
+ #region Date parts
22
+ protected const string NanosecondPart = "NS" ;
23
+ protected const string MillisecondPart = "MS" ;
24
+ protected const string SecondPart = "SECOND" ;
25
+ protected const string MinutePart = "MINUTE" ;
26
+ protected const string HourPart = "HOUR" ;
27
+ protected const string DayPart = "DAY" ;
28
+ protected const string MonthPart = "MONTH" ;
29
+ protected const string YearPart = "YEAR" ;
30
+ protected const string WeekdayPart = "WEEKDAY" ;
31
+ #endregion
32
+
21
33
protected static readonly long NanosecondsPerDay = TimeSpan . FromDays ( 1 ) . Ticks * 100 ;
22
34
protected static readonly long NanosecondsPerSecond = 1000000000 ;
23
35
protected static readonly long NanosecondsPerMillisecond = 1000000 ;
@@ -379,64 +391,64 @@ public override void Visit(SqlCreateIndex node, IndexColumn item)
379
391
380
392
#region Static helpers
381
393
382
- private static SqlCast CastToLong ( SqlExpression arg )
394
+ protected static SqlCast CastToLong ( SqlExpression arg )
383
395
{
384
396
return SqlDml . Cast ( arg , SqlType . Int64 ) ;
385
397
}
386
398
387
- private static SqlCast CastToDecimal ( SqlExpression arg , short precision , short scale )
399
+ protected static SqlCast CastToDecimal ( SqlExpression arg , short precision , short scale )
388
400
{
389
401
return SqlDml . Cast ( arg , SqlType . Decimal , precision , scale ) ;
390
402
}
391
403
392
404
protected static SqlUserFunctionCall DatePartWeekDay ( SqlExpression date )
393
405
{
394
- return SqlDml . FunctionCall ( "DATEPART" , SqlDml . Native ( "WEEKDAY" ) , date ) ;
406
+ return SqlDml . FunctionCall ( "DATEPART" , SqlDml . Native ( WeekdayPart ) , date ) ;
395
407
}
396
408
397
409
protected static SqlUserFunctionCall DateDiffDay ( SqlExpression date1 , SqlExpression date2 )
398
410
{
399
- return SqlDml . FunctionCall ( "DATEDIFF" , SqlDml . Native ( "DAY" ) , date1 , date2 ) ;
411
+ return SqlDml . FunctionCall ( "DATEDIFF" , SqlDml . Native ( DayPart ) , date1 , date2 ) ;
400
412
}
401
413
402
414
protected static SqlUserFunctionCall DateDiffMillisecond ( SqlExpression date1 , SqlExpression date2 )
403
415
{
404
- return SqlDml . FunctionCall ( "DATEDIFF" , SqlDml . Native ( "MS" ) , date1 , date2 ) ;
416
+ return SqlDml . FunctionCall ( "DATEDIFF" , SqlDml . Native ( MillisecondPart ) , date1 , date2 ) ;
405
417
}
406
418
407
419
protected static SqlUserFunctionCall DateAddYear ( SqlExpression date , SqlExpression years )
408
420
{
409
- return SqlDml . FunctionCall ( "DATEADD" , SqlDml . Native ( "YEAR" ) , years , date ) ;
421
+ return SqlDml . FunctionCall ( "DATEADD" , SqlDml . Native ( YearPart ) , years , date ) ;
410
422
}
411
423
412
424
protected static SqlUserFunctionCall DateAddMonth ( SqlExpression date , SqlExpression months )
413
425
{
414
- return SqlDml . FunctionCall ( "DATEADD" , SqlDml . Native ( "MONTH" ) , months , date ) ;
426
+ return SqlDml . FunctionCall ( "DATEADD" , SqlDml . Native ( MonthPart ) , months , date ) ;
415
427
}
416
428
417
429
protected static SqlUserFunctionCall DateAddDay ( SqlExpression date , SqlExpression days )
418
430
{
419
- return SqlDml . FunctionCall ( "DATEADD" , SqlDml . Native ( "DAY" ) , days , date ) ;
431
+ return SqlDml . FunctionCall ( "DATEADD" , SqlDml . Native ( DayPart ) , days , date ) ;
420
432
}
421
433
422
434
protected static SqlUserFunctionCall DateAddHour ( SqlExpression date , SqlExpression hours )
423
435
{
424
- return SqlDml . FunctionCall ( "DATEADD" , SqlDml . Native ( "HOUR" ) , hours , date ) ;
436
+ return SqlDml . FunctionCall ( "DATEADD" , SqlDml . Native ( HourPart ) , hours , date ) ;
425
437
}
426
438
427
439
protected static SqlUserFunctionCall DateAddMinute ( SqlExpression date , SqlExpression minutes )
428
440
{
429
- return SqlDml . FunctionCall ( "DATEADD" , SqlDml . Native ( "MINUTE" ) , minutes , date ) ;
441
+ return SqlDml . FunctionCall ( "DATEADD" , SqlDml . Native ( MinutePart ) , minutes , date ) ;
430
442
}
431
443
432
444
protected static SqlUserFunctionCall DateAddSecond ( SqlExpression date , SqlExpression seconds )
433
445
{
434
- return SqlDml . FunctionCall ( "DATEADD" , SqlDml . Native ( "SECOND" ) , seconds , date ) ;
446
+ return SqlDml . FunctionCall ( "DATEADD" , SqlDml . Native ( SecondPart ) , seconds , date ) ;
435
447
}
436
448
437
449
protected static SqlUserFunctionCall DateAddMillisecond ( SqlExpression date , SqlExpression milliseconds )
438
450
{
439
- return SqlDml . FunctionCall ( "DATEADD" , SqlDml . Native ( "MS" ) , milliseconds , date ) ;
451
+ return SqlDml . FunctionCall ( "DATEADD" , SqlDml . Native ( MillisecondPart ) , milliseconds , date ) ;
440
452
}
441
453
442
454
protected static SqlUserFunctionCall DateTimeToStringIso ( SqlExpression dateTime )
0 commit comments