如何在上午/下午 24 小时之间设置日期
Posted
技术标签:
【中文标题】如何在上午/下午 24 小时之间设置日期【英文标题】:How to set date between AM/PM 24-hour 【发布时间】: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 >= '2021-10-20' && x.CreatedOn <= '2021-10-20'
等价于x.CreatedOn = '2021-10-20'
并且可能不匹配表中的任何记录。如果CreatedOn
是date
字段,它将匹配具有该日期的任何行。如果它是datetime
、datetime2
等,它将匹配完全 2021-10-20 00:00:00.0000
的行
另一方面,如果您尝试过滤内存列表,则查询只会匹配与该值完全匹配的项目,精确到纳秒
问题不清楚。
在客户端有日期范围选择器。如果我选择相同的日期来获取记录。数据还没来。但如果我选择不同的范围,它的工作。我想知道如果我给出一个日期范围怎么办
@ChathurangaRanasingha 将代码发布为文本,而不是难以阅读的图像。图像不能被复制、编译和调试。问题是由字段类型引起的,而不是由客户端引起的。 CreatedOn
是什么?如果是表格列,它的类型是什么?如果它有时间组件,则查询必须更改为 x.CreatedOn >=date.Date && x.CreatedOn < date.Date.AddDays(1)
【参考方案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
【讨论】:
不应该是<=
in x.CreatedOn <= todate
否则它将匹配defaultFromD 和x.CreatedOn >= todate
之后的任何日期是多余的?
@phuzi 是的。你说对了。打字错误。谢谢。
我已经用错字修复更新了你的问题。以上是关于如何在上午/下午 24 小时之间设置日期的主要内容,如果未能解决你的问题,请参考以下文章
swift - 如何将日期从上午/下午转换为 24 小时格式
Javascript:将 24 小时时间字符串转换为 12 小时时间,上午/下午且无时区