private static string GetDateTimeFunctionBody(DbDateTimeFunctionExpressionType dateTimeFunctionExpressionType)
{
switch (dateTimeFunctionExpressionType)
{
case DbDateTimeFunctionExpressionType.AddYears:
return "DATETIME({0}, '+{1} year')";
case DbDateTimeFunctionExpressionType.AddMonths:
return "DATETIME({0}, '+{1} month')";
case DbDateTimeFunctionExpressionType.AddDays:
return "DATETIME({0}, '+{1} day')";
case DbDateTimeFunctionExpressionType.AddHours:
return "DATETIME({0}, '+{1} hour')";
case DbDateTimeFunctionExpressionType.AddMinutes:
return "DATETIME({0}, '+{1} minute')";
case DbDateTimeFunctionExpressionType.AddSeconds:
return "DATETIME({0}, '+{1} second')";
case DbDateTimeFunctionExpressionType.AddMilliseconds:
return "DATE_ADD({0}, INTERVAL {1} * 1000 MICROSECOND)";
case DbDateTimeFunctionExpressionType.Date:
return "DATE({0})";
case DbDateTimeFunctionExpressionType.DayOfMonth:
return "STRFTIME('%d',{0})";
case DbDateTimeFunctionExpressionType.DayOfWeek:
return "STRFTIME('%w',{0})";
case DbDateTimeFunctionExpressionType.DayOfYear:
return "STRFTIME('%j',{0})";
case DbDateTimeFunctionExpressionType.Year:
return "STRFTIME('%Y',{0})";
case DbDateTimeFunctionExpressionType.Month:
return "STRFTIME('%m',{0})";
case DbDateTimeFunctionExpressionType.Hour:
return "STRFTIME('%H',{0})";
case DbDateTimeFunctionExpressionType.Minute:
return "STRFTIME('%M',{0})";
case DbDateTimeFunctionExpressionType.Second:
return "STRFTIME('%S',{0})";
case DbDateTimeFunctionExpressionType.MilliSecond:
return "(EXTRACT(MICROSECOND FROM {0}) DIV 1000)";
case DbDateTimeFunctionExpressionType.Now:
return "DATETIME('now','localtime')";
case DbDateTimeFunctionExpressionType.ToDay:
return "DATE('now','localtime')";
default:
throw new ArgumentOutOfRangeException("dateTimeFunctionExpressionType",
string.Format(
"The DateTimeFunctionExpressionType '{0}' is not supported",
dateTimeFunctionExpressionType));
}
}