比较日期时间 SQL 服务器和 asp.net

Comparing Datetime SQL server and asp.net

我正在制作一个函数,如果它在 60 分钟 内,将取消订单 ,我被建议的是比较订单的日期时间值到当前日期时间。

        using (SqlConnection con = new SqlConnection(Helper.GetCon()))
        {
            con.Open();
            string query = @"SELECT * from [Order] where orderid = @id";
            using (SqlCommand cmd = new SqlCommand(query, con))
            {
                cmd.Parameters.AddWithValue("@id", id);
                using (SqlDataReader data = cmd.ExecuteReader())
                {
                    DataTable dt = new DataTable();
                    dt.Load(data);
                    foreach (DataRow dr in dt.Rows)
                    {
                        var supplier = new Supplier();
                        supplier.OrderDate = DateTime.Parse(dr["OrderDate"].ToString());
                    }
                }
            }
            return View();

到目前为止,我只从数据库中获取了日期时间,我想知道如何获取当前日期时间并获得差异,比如 分钟hours 这样我就可以做一个条件语句来允许或不允许取消订单。我对此很陌生,我们将不胜感激! 谢谢!

使用 DateDiff,将所选日期列与现在进行比较并使用 MINUTE 差异:

SELECT DATEDIFF(MINUTE, OrderDate , getdate()) AS MinuteDiff from [Order] where orderid =123

如果您必须在应用程序而不是 SQL 查询中执行此操作,您可以执行以下操作:

var timeSinceOrder = DateTime.Now - supplier.OrderDate;

if(timeSinceOrder < TimeSpan.FromHours(1))
{
    //do stuff here
}

DateTime.Now 获取当前时间。从当前时间减去订单日期 returns 一个时间跨度,然后您可以将该时间跨度与另一个时间跨度进行比较,在本例中由函数 Timespan.FromHours.

创建

您也可以使用DateTime.Compare方法。像

If(DateTime.Compare(supplier.OrderDate, DateTime.Now) < 60)
{  
   //Enable Cancel/Delete Order
}