sql - 如何根据给出的日期时间从数据库中获取数据?
问题描述
我正在尝试在两个日期之间从数据库中检索数据,这些日期作为日期时间字段而不是日期存储在数据库中。
我将输入作为字符串提供为日期,例如:20/06/2019 到 22/06/2019 然后我使用以下代码将字符串转换为日期时间:
string fromDate= "20/06/2019";
string toDate= "22/06/2019";
DateTime OfromDate = DateTime.ParseExact(fromDate, "dd/MM/yyyy", null);
DateTime OtoDate = DateTime.ParseExact(toDate, "dd/MM/yyyy", null);
然后我通过这个查询将日期时间传递给方法,我认为问题出在哪里
command.CommandText = string.Format("select * from tableDates where TRUNC(DATE_M) BETWEEN TO_DATE('{0}','DD-MON-RRRR') AND TO_DATE('{1}','DD-MON-RRRR')", fromDate, toDate);
注意我正在尝试检索 20/06/2019 到 22/06/2019 之间的所有数据
解决方案
您的日期字符串具有格式DD/MM/RRRR
,并且您正在使用格式模型DD-MON-RRRR
。分隔符不是问题,但 Oracle 的字符串到日期转换规则指定:
MM
匹配MON
或MONTH
MON
火柴MONTH
MONTH
火柴MON
它没有指定这样MON
匹配MM
:
select *
from tableDates
where TRUNC(DATE_M) BETWEEN TO_DATE('20/06/2019','DD-MON-RRRR')
AND TO_DATE('20/06/2019','DD-MON-RRRR')
将导致:
ORA-01843: not a valid month
如果您将格式模型更改为MM
:
select *
from tableDates
where TRUNC(DATE_M) BETWEEN TO_DATE('20/06/2019','DD-MM-RRRR')
AND TO_DATE('20/06/2019','DD-MM-RRRR')
将工作。
db<>在这里摆弄
推荐阅读
- android - 使用 Agora SDK for Android 进行屏幕共享无法正常工作,显示黑屏
- java - Spring Boot 无法在正确的端点上显示 .jsp 文件
- python - 使用 python 和 tkinter 跟踪文本中的光标移动
- android - Android:Google Play 控制台:新:更新现有应用程序的国家/地区列表
- python - 调用预测函数时,部署的 xgboost 模型失败并出现错误
- python - 如何在设置标头和 JSESSIONID 时通过请求获取数据
- 3d - 如何通过 3d 扫描将标记图像放置在所需位置
- java - 一种用注释指示方法启动/失败/成功的方法
- typescript - 如何为具有重载签名的单个实现推断 Typescript 参数类型?
- css - TextMesh Pro XML 修改