我做了一个真正的快速查询,我为它感到骄傲:p 。因此,这里,它是:
public static string FromClausePartForDateComparisson(string tableName, string dateFieldName, string idFieldName, DateTime from, DateTime to)
{
string clause = string.Format(@" from
(SELECT {0} as filteredId,
Substr('00'|| -- make day with two digits
CASE Substr({1}.{2}, 3, 1)
WHEN '/' THEN Substr({1}.{2}, 1, 2)
ELSE Substr({1}.{2}, 1, 1)
END, -2, 2) AS DAY,
Substr('00'|| -- make month with two digits
CASE Length({1}.{2})
WHEN 8 THEN Substr({1}.{2}, 3, 1)
WHEN 9 THEN CASE Substr({1}.{2}, 3, 1)
WHEN '/' THEN Substr({1}.{2}, 4, 1)
ELSE Substr({1}.{2}, 3, 2)
END
WHEN 10 THEN Substr({1}.{2}, 4, 2)
END, -2, 2) AS MONTH,
Substr({1}.{2}, Length({1}.{2}) - 3, 4) AS YEAR
FROM {1}
WHERE Strftime('%Y%m%d', YEAR||'-'||MONTH||'-'|| DAY) BETWEEN
Strftime('%Y%m%d', '{3}') AND
Strftime('%Y%m%d', '{4}')) AS filteredtable
INNER JOIN {1} ON filteredtable.filteredId = {1}.{0} ", idFieldName, tableName, dateFieldName, from.ToString("yyyy-MM-dd"), to.ToString("yyyy-MM-dd"));
return clause;
}
而且它被用作:通过date`手段,例如
var selectCommand = new SQLiteCommand("SELECT * " +
FromClausePartForDateComparisson("TABLENAME", "DATE", "ID", from, to) +
@"WHERE [email protected]";
','用于30分之3/ 12'? – mellamokb 2012-03-30 15:34:20
@mellamokb例如:我想选择日期大于30/03/2012的所有条目。 – Odys 2012-03-30 15:45:31