将 Datetime.now 与 SQL 表上的日期进行比较
我正在尝试在 C# 上编写代码,将 SQL 表(表:items,列“endTime”)上的日期与 datetime.now 进行比较,并按结果显示图像。
例如:
如果列表上的时间早于现在的时间..则显示在aspx图像1上,否则显示图像2。
我尝试通过 sql 命令来做到这一点:
private DateTime endTime(out int lastDate)
{
SqlConnection connection = new SqlConnection("Data Source=******;Initial Catalog=******;User ID=*****;Integrated Security=False;");
string commandtext = "SELECT TOP(1) endTime FROM items";
SqlCommand command = new SqlCommand(commandtext, connection);
connection.Open();
SqlCommand command2 = new SqlCommand(commandtext, connection);
lastDate = (int)command2.ExecuteScalar();
connection.Close();
return ...
}
但我在返回和执行该方法时遇到问题...:
int d;
Console.WriteLine(endTime(out d));
if (d < DateTime.Now)
{
image1.Visible = true;
}
else
{
image2.Visible = true;
}
Console.WriteLine(d);
但我收到错误,但我相信它来自返回。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
我建议让数据库在 sql 中直接进行日期比较。
SYSDATE 可以与查询中的 EndTime 进行比较,您可以不带回不匹配的行(这允许您平等地处理结果集中的每一行),或者检查返回集中的一个简单值以查看是否时间正是在正确的时期。
i would suggest letting the database do the date comparison right in the sql.
SYSDATE can be compared to EndTime right in the query, and you can either not bring back rows that dont match (which allows you to process every row in the result set equally) or you check a simple value in the return set to see if the time is in the right period.
使用以下代码代替
if (d:
if (d
Instead of
if (d < DateTime.Now)
use this:if (d < DateTime.Now.Date)
难道您不应该从查询中抛出 DateTime 而不是 int 吗?此外,堆栈跟踪/调试器应该为您提供异常的行号。你能发布堆栈跟踪吗?
Shouldn't you be casting out a DateTime from your query and not an int? Also, the stack trace/debugger should give you the line number of the exception. Can you post the stack trace?
int
转换为DateTime
,请显示代码,请将using()
块中,如下所示:int
intoDateTime
, show a code pleaseusing()
block as shown below: