【问题标题】:How to set date between AM/PM 24-hour如何在上午/下午 24 小时之间设置日期
【发布时间】:2021-12-08 23:34:24
【问题描述】:

我有 2 个参数。一个是 defaultFromD,另一个是 defaultFromD。如果我为此 x.CreatedOn >= defaultFromD && x.CreatedOn <= defaultToD 提供 2 个日期范围@

x.CreatedOn >= '2021-10-17' && x.CreatedOn

它的工作。但如果我为这两个参数提供相同的日期,则此条件不起作用。

x.CreatedOn >= '2021-10-20' && x.CreatedOn

我想知道如何在一个条件下通过这 2 个逻辑。请帮我解决这个问题。

谢谢...

  public ResponseDTO<IQueryable<LabRequestForLabOrderDTO>> GetApprovedLabRequestsQueryable(DateTime defaultFromD, DateTime defaultToD)
    {
        var resp = ResponseBuilder.Build<IQueryable<LabRequestForLabOrderDTO>>();
        var reqs = this.labRequestRepository.GetAllActive().Where(x => x.IsActive && x.TrxStatus == 1 && x.InvoiceStatus == "Approved"
                        && x.CreatedOn >= defaultFromD && x.CreatedOn <= defaultToD)
                .Select(x => new LabRequestForLabOrderDTO
                {
                    Clinic = x.Clinic,
                    LabOrderCreated = x.LabOrderCreated,
                    InvoiceStatus = x.InvoiceStatus,
                    CreatedOn = x.CreatedOn
                }).AsQueryable();

        resp.AddSuccessResult(reqs);
        return resp;
    }

【问题讨论】:

  • 将代码发布为文本并说明您要检索的内容。如果您查询数据库,则发布表架构,尤其是字段类型。 x.CreatedOn &gt;= '2021-10-20' &amp;&amp; x.CreatedOn &lt;= '2021-10-20' 等价于x.CreatedOn = '2021-10-20' 并且可能不匹配表中的任何记录。如果CreatedOndate 字段,它将匹配具有该日期的任何行。如果它是datetimedatetime2 等,它将匹配完全 2021-10-20 00:00:00.0000 的行
  • 另一方面,如果您尝试过滤内存列表,则查询只会匹配与该值完全匹配的项目,精确到纳秒
  • 问题不清楚。
  • 在客户端有日期范围选择器。如果我选择相同的日期来获取记录。数据还没来。但如果我选择不同的范围,它的工作。我想知道如果我给出一个日期范围怎么办
  • @ChathurangaRanasingha 将代码发布为文本,而不是难以阅读的图像。图像不能被复制、编译和调试。问题是由字段类型引起的,而不是由客户端引起的。 CreatedOn 是什么?如果是表格列,它的类型是什么?如果它有时间组件,则查询必须更改为 x.CreatedOn &gt;=date.Date &amp;&amp; x.CreatedOn &lt; date.Date.AddDays(1)

标签: c# asp.net .net asp.net-mvc model-view-controller


【解决方案1】:

试试这个

x.CreatedOn.AddDays(-1) > defaultFromD && x.CreatedOn.AddDays(1) < defaultToD

【讨论】:

    【解决方案2】:

    这是由于 DateTime 和 Date Formate。

    你应该试试下面的方法。

    假设您的列 CreatedOn 数据类型是:DateTime

    x.CreatedOn.Date >= '2021-10-20' && x.CreatedOn.Date <= '2021-10-20'
    

    【讨论】:

    • 我试过了。它不起作用
    • 能否请您提供 CreatedOn 日期的示例数据?
    • 对不起。我没听懂你。
    • 分享您在这种情况下需要的表格样本数据。 x.CreatedOn >= '2021-10-20' && x.CreatedOn
    【解决方案3】:

    这对我有用

    var todate = defaultToD.AddDays(1);
    
    x.CreatedOn >= defaultFromD && x.CreatedOn <= todate
    

    【讨论】:

    • 不应该是&lt;= in x.CreatedOn &lt;= todate 否则它将匹配defaultFromD 和x.CreatedOn &gt;= todate 之后的任何日期是多余的?
    • @phuzi 是的。你说对了。打字错误。谢谢。
    • 我已经用错字修复更新了你的问题。
    猜你喜欢
    • 1970-01-01
    • 2015-06-02
    • 2012-01-10
    • 1970-01-01
    • 2012-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多