我正在使用Oracle数据库和Nuget包
在Oracle数据库中,有一个使用Timestamp(6)定义的字段。 当我首先使用数据库时,它会转换为DateTime。 到目前为止一切都很好。
现在我要将当前时间戳插入表中:
DateTime dateTime = DateTime.Now;
//only 3 parts of milisec
DateTime zeitStempel = dateTime.AddTicks(-1 * dateTime.Ticks % 10000);
using (Entities ctx = new Entities(DBConnect.BuildConnectionString(_bedien, "ModelJobLog")))
{
JOB job = (from e in ctx.JOB
where e.PROGNAME == progName
select e).FirstOrDefault();
JOBLAEUFE lauf = new JOBLAEUFE();
lauf.JOBID = job.JOBID;
lauf.JOB = job;
lauf.LETZTSTART = zeitStempel;
ctx.JOBLAEUFE.Add(lauf);
ctx.SaveChanges();
}
一切都很好,在我的领域我有价值: “26.10.17 07:39:53,381000000”
现在我记得这个dateTime(变量zeitStempel),现在我要在这个表中搜索它。 所以我仍然有相同的dateTime对象,现在搜索数据库中的值,并希望在另一个字段中设置当前的dateTime:
using (Entities ctx = new Entities(DBConnect.BuildConnectionString(_bedien, "ModelJobLog")))
{
try
{
Oracle.ManagedDataAccess.Types.OracleTimeStamp tmstmp = zeitStempel;
JOBLAEUFE lauf = (from e in ctx.JOBLAEUFE
join j in ctx.JOB on e.JOBID equals j.JOBID
where j.PROGNAME == progName
&&( e.LETZTSTART.Equals(zeitStempel)
|| (e.LETZTSTART.Year == zeitStempel.Year
&& e.LETZTSTART.Month == zeitStempel.Month
&& e.LETZTSTART.Day == zeitStempel.Day
&& e.LETZTSTART.Hour == zeitStempel.Hour
&& e.LETZTSTART.Minute == zeitStempel.Minute
&& e.LETZTSTART.Second == zeitStempel.Second
))
select e).FirstOrDefault();
lauf.LETZTEND = DateTime.Now;
ctx.SaveChanges();
}
.
.
.
}
如果我在where子句中与比较秒,我永远不会得到DB的值。但是,如果我将Seconds从where子句中删除,他会找到数据库记录。但当然,单独一分钟就不够精确。
两者,e.LETZTSTART和zeitStempel来自DateTime,如果我检查调试,所有属性都是相同的。
亲切的问候,