nhibernate / NHibernate.JetDriver

Jet Driver for NHibernate
GNU Lesser General Public License v2.1
3 stars 8 forks source link

NHCD-35 - SQL Functions day, year, month not working in JetDialect #6

Open nhibernate-bot opened 7 years ago

nhibernate-bot commented 7 years ago

Thomas Kalmar created issue - 22/Jul/09 12:00 PM

the JetDialect has some strange ways to try to extract the year(month, day) part of an datetime:

crit.Add(Restrictions.Eq(Projections.SqlFunction("Year", NHibernateUtil.DateTime, Projections.Property("lastChanged")), filter.LastChanged.Year));

adds some "and (extract year from ?)" to the sql. This does not work in M$ Access. To fix this add

RegisterFunction("year", new SQLFunctionTemplate(NHibernateUtil.DateTime, "year(?1)"));
RegisterFunction("month", new SQLFunctionTemplate(NHibernateUtil.DateTime, "month(?1)"));
RegisterFunction("day", new SQLFunctionTemplate(NHibernateUtil.DateTime, "day(?1)"));

to the JetDialect After that all worked like a charm


Thomas Kalmar added a comment - 17/Sep/09 10:13 PM

Silly me. Should be:

RegisterFunction("year", new SQLFunctionTemplate(NHibernateUtil.Int32, "year(?1)"));
RegisterFunction("month", new SQLFunctionTemplate(NHibernateUtil.Int32, "month(?1)"));
RegisterFunction("day", new SQLFunctionTemplate(NHibernateUtil.Int32, "day(?1)"));