在 ServiceStack 的 Ormlite 中处理日期和日期时间
Handling dates and datetimes in ServiceStack's Ormlite
我正在使用 Ormlite.Oracle
做这样的事情:
using (var db = dbFactory.Open())
{
var events = db.From<Event>()
.Where(row => row.Event_Date == Today);
List<Event> results = db.Select(events);
db.Close();
return results;
}
问题是 row.Event_Date
是一个 DateTime 而 Today
只是一个总是以 00:00:00 结尾的日期,所以 where 子句从不匹配。我想将 row.Event_Date
转换为日期。我试过 Event_Date.Date
和 Event_Date.toString("MM/dd/yyyy")
等。但这不起作用,因为 OrmLite 不能很好地将这些类型的转换转换为 Oracle。例如,当我做 Event_Date.toString("MM/dd/yyyy")
时,OrmLite 将其转换为 Oracle 中的 varchar(1000),但有点忘记传递字符串格式。
有什么办法可以在不使用原始 sql 的情况下解决这个问题吗?
您可以简单地将 1 天添加到今天,然后使用 && 运算符 select 所有具有正确日期部分的 Event_Date,而不考虑时间部分
var Tomorrow = Today.AddDays(1);
var events = db.From<Event>()
.Where(row => row.Event_Date >= Today &&
row.Event_Date < Tomorrow);
我正在使用 Ormlite.Oracle
做这样的事情:
using (var db = dbFactory.Open())
{
var events = db.From<Event>()
.Where(row => row.Event_Date == Today);
List<Event> results = db.Select(events);
db.Close();
return results;
}
问题是 row.Event_Date
是一个 DateTime 而 Today
只是一个总是以 00:00:00 结尾的日期,所以 where 子句从不匹配。我想将 row.Event_Date
转换为日期。我试过 Event_Date.Date
和 Event_Date.toString("MM/dd/yyyy")
等。但这不起作用,因为 OrmLite 不能很好地将这些类型的转换转换为 Oracle。例如,当我做 Event_Date.toString("MM/dd/yyyy")
时,OrmLite 将其转换为 Oracle 中的 varchar(1000),但有点忘记传递字符串格式。
有什么办法可以在不使用原始 sql 的情况下解决这个问题吗?
您可以简单地将 1 天添加到今天,然后使用 && 运算符 select 所有具有正确日期部分的 Event_Date,而不考虑时间部分
var Tomorrow = Today.AddDays(1);
var events = db.From<Event>()
.Where(row => row.Event_Date >= Today &&
row.Event_Date < Tomorrow);