private static string GetDateTimeFunctionBody(DbDateTimeFunctionExpressionType dateTimeFunctionExpressionType)
{
switch (dateTimeFunctionExpressionType)
{
case DbDateTimeFunctionExpressionType.AddYears:
return "DATE_ADD({0}, INTERVAL {1} YEAR)";
case DbDateTimeFunctionExpressionType.AddMonths:
return "DATE_ADD({0}, INTERVAL {1} MONTH)";
case DbDateTimeFunctionExpressionType.AddDays:
return "DATE_ADD({0}, INTERVAL {1} DAY)";
case DbDateTimeFunctionExpressionType.AddHours:
return "DATE_ADD({0}, INTERVAL {1} HOUR)";
case DbDateTimeFunctionExpressionType.AddMinutes:
return "DATE_ADD({0}, INTERVAL {1} MINUTE)";
case DbDateTimeFunctionExpressionType.AddSeconds:
return "DATE_ADD({0}, INTERVAL {1} SECOND)";
case DbDateTimeFunctionExpressionType.AddMilliseconds:
return "DATE_ADD({0}, INTERVAL {1} * 1000 MICROSECOND)";
case DbDateTimeFunctionExpressionType.Date:
return "DATE({0})";
case DbDateTimeFunctionExpressionType.DayOfMonth:
return "EXTRACT(DAY FROM {0})";
case DbDateTimeFunctionExpressionType.DayOfWeek:
return "WEEKDAY({0})";
case DbDateTimeFunctionExpressionType.DayOfYear:
return "DAYOFYEAR({0})";
case DbDateTimeFunctionExpressionType.Year:
return "EXTRACT(YEAR FROM {0})";
case DbDateTimeFunctionExpressionType.Month:
return "EXTRACT(MONTH FROM {0})";
case DbDateTimeFunctionExpressionType.Hour:
return "EXTRACT(HOUR FROM {0})";
case DbDateTimeFunctionExpressionType.Minute:
return "EXTRACT(MINUTE FROM {0})";
case DbDateTimeFunctionExpressionType.Second:
return "EXTRACT(SECOND FROM {0})";
case DbDateTimeFunctionExpressionType.MilliSecond:
return "(EXTRACT(MICROSECOND FROM {0}) DIV 1000)";
case DbDateTimeFunctionExpressionType.Now:
return "CURRENT_TIMESTAMP()";
case DbDateTimeFunctionExpressionType.ToDay:
return "CURRENT_DATE()";
default:
throw new ArgumentOutOfRangeException("dateTimeFunctionExpressionType",
string.Format(
"The DateTimeFunctionExpressionType '{0}' is not supported",
dateTimeFunctionExpressionType));
}
}