使用此代码:
public static bool PlatypusIsAFornightOrLessOld(int PlatypusID) {
const int FORTNIGHT = 14;
const string sql = @"SELECT PLATYPUSBIRTHDATE
FROM PLATYPI
WHERE PLATYPUSID = :PLATYPUSID";
DateTime dt;
try {
using (var ocmd = new OracleCommand(sql, oc)) {
ocmd.Parameters.Add("PLATYPUSID", PlatypusID);
dt = Convert.ToDateTime(ocmd.ExecuteScalar());
}
return (DateTime.Today - dt) <= FORTNIGHT;
} catch (Exception e) {
. . .
Run Code Online (Sandbox Code Playgroud)
我得到:"运算符'<='不能应用于"返回"行上'System.TimeSpan'和'int'类型的操作数.
你需要这样做
return (DateTime.Today - dt).Days <= FORTNIGHT;
Run Code Online (Sandbox Code Playgroud)
Days返回时间跨度的完整天数.如果您需要小数天,则可以使用TotalDays.
也有人建议打算从该TimeSpan
到的天数.我建议将其表示FORTNIGHT
为更清晰TimeSpan
.或者,更好的是:将截止日期计算为a DateTime
并完全避免减法:
public static bool PlatypusIsAFornightOrLessOld(int platypusId) {
DateTime oneFortnightAgo = DateTime.Today.AddDays(-14);
... SQL stuff ...
return dt >= oneFortnightAgo;
}
Run Code Online (Sandbox Code Playgroud)
此外,我希望你没有真正进入catch(Exception e)
你的真实代码.你应该几乎永远不会捕获Exception
- 并且绝对不是在进行SQL操作的同一方法中.
归档时间: |
|
查看次数: |
281 次 |
最近记录: |