我有基本的SQL知识,我正在尝试根据用户选择的日期从我的数据库中检索数据。因此,如果用户选择 2018-03-01 ,我想显示日期值 2018-03-02 的数据
我可以通过以下方式搜索指定日期的数据:
select * from FLIGHTS where DEPARTURE_DATE = '2018-03-01';
现在,我想在数据中搜索指定的日期,以便' 2018-03-02'在这种情况下。我无法直接搜索3月2日,因为我不知道用户选择的日期
那么有没有办法查询指定数据旁边日期的数据?
我已经尝试过在任何地方查找,但无法找到对我有意义的任何内容。
THX
答案 0 :(得分:0)
您使用什么类型的元素让用户能够获取他们的日期以及您的代码库是什么?我们有DB的mysql,但我们需要知道你的代码库是c#,PHP等。
大多数语言通常都有一个功能,允许您将日期添加到日期时间,例如,如果您使用C#并使用日期时间选择器发布其值,您可以执行此操作:
DateTime dateField = postedDateTime.AddDays(1);
从那里你可以轻松地逃避价值并推动你的数据库调用。
或PHP:
$dateField = date('Y-m-d', strtotime($postedDateTime. ' + 1 days'));
如果你想要一个日期范围(选择日期和第二天),那么你可以调整你的PHP代码:
$dateFrom = $postedDateTime;
$dateTo = date('Y-m-d', strtotime($postedDateTime. ' + 2 days'));
$dateTo = date('Y-m-d', strtotime($dateTo. ' - 1 seconds'));
//DB Query
$query = "select * from FLIGHT where DEPARTURE_DATE >= :dateFrom AND DEPARTURE_DATE <= :dateTo";
以上假设您使用的是pdo,但您可以看到如何根据您的情况进行调整。我还假设日期时间基于每天的午夜,所以你可能需要调整你的日期,以便在一天之后的午夜之前从1秒开始,这样你就可以得到整天的数据
答案 1 :(得分:0)
我认为这很有效。通过date/time functions的文档,您应该可以执行类似的操作,
select * from FLIGHTS where DEPARTURE_DATE = '2018-03-01' + INTERVAL 1 DAY
答案 2 :(得分:0)
您可以使用interval
作为答案中提到的day
。与day
一起,您还可以day_minute
,day_hour
,day_second
,但请确保在这些上添加小数。