compile method
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))}';
}