compile method

  1. @override
String compile(
  1. MssqlParameterAllocator parameters,
  2. MssqlDialect dialect
)
override

Writes this expression's SQL, binding any values through parameters.

Implementation

@override
String compile(MssqlParameterAllocator parameters, MssqlDialect dialect) {
  final inner = operand.compile(parameters, dialect);
  // CAST to date rather than CONVERT with a style: it is the sargable form,
  // so an index on the column can still be used.
  final left = switch (part) {
    MssqlDatePart.date => 'CAST($inner AS date)',
    MssqlDatePart.time => 'CAST($inner AS time)',
    MssqlDatePart.year => 'YEAR($inner)',
    MssqlDatePart.month => 'MONTH($inner)',
    MssqlDatePart.day => 'DAY($inner)',
  };
  return '$left ${operator.sql} ${parameters.bind(_bound(value))}';
}