【问题标题】:Comparing Datetime SQL server and asp.net比较日期时间 SQL 服务器和 asp.net
【发布时间】:2019-08-04 10:37:31
【问题描述】:

我正在制作一个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();

到目前为止,我只从数据库中获取了日期时间,我想知道如何获取当前日期时间并以 minuteshours 为例这样我就可以做出条件声明来允许或不允许取消订单。我对此很陌生,任何帮助将不胜感激! 谢谢!

【问题讨论】:

标签: c# sql asp.net sql-server ado.net


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

    var timeSinceOrder = DateTime.Now - supplier.OrderDate;
    
    if(timeSinceOrder < TimeSpan.FromHours(1))
    {
        //do stuff here
    }
    

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

    【讨论】:

    • 嘿@Andrew!感谢您的帮助。我尝试了代码,它完美无缺。干杯!
    【解决方案3】:

    您也可以使用 DateTime.Compare 方法。类似的东西

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-09-11
      • 2012-02-07
      • 1970-01-01
      • 1970-01-01
      • 2015-07-20
      • 1970-01-01
      相关资源
      最近更新 更多