如何在两个日期和时间之间从数据库获取记录?

时间:2017-08-01 16:47:27

标签: mysql winforms

我在UI中从服务器获取日期请求:

request.date_from = dateTimePickerFromDate.Value; //7/31/2017 12:33:18 PM request.date_to = dateTimePickerToDate.Value; //7/31/2017 12:33:18 PM

数据未显示,因为date_from和date_to的时间相同

在数据库中我有SQL查询:

@date_from datetime, @date_to datetime

select Transaction_date from Transaction where (Transaction_Date >= @date_from and Transaction_Date <= @date_to) order by Transaction_date desc

如果我选择不同的日期 ,我会收到数据,但是如果我选择相同的日期,虽然我在同一时间内在数据库中有记录,但数据不会显示。

因为我想显示日期 7/31/2017 00:00:00 7/31/2017 23:59:59 之间的记录我需要在SQL查询中或在winforms UI中创建?

2 个答案:

答案 0 :(得分:1)

在查询中使用

select * from table where {date_filed} between {start_data} and {end_date}

或者您可以使用

select * from table where {date_filed} >= {start_data} and {date_filed} <= {end_date}

但是在date date字段中都需要datetime或timestamp数据类型,否则使用str_to_date在mysql查询中使用它的类型情况

答案 1 :(得分:0)

假设您的表单上有两个DatePicker控件。我会在dt_to添加一天。

var dt_from = dateTimePicker1.Value;
var dt_to = dateTimePicker2.Value;
if (dt_from.Date == dt_to.Date)
    dt_to = dt_to.AddDays(1);

<强> [更新]

request.date_from = dateTimePickerFromDate.Value; 
request.date_to = dateTimePickerToDate.Value;
if (request.date_from.Value.Date == request.date_to.Value.Date)
    request.date_to = dt_to.Value.AddDays(1);

[更新2]

request.date_from = dateTimePickerFromDate.Value; 
request.date_to = dateTimePickerToDate.Value;
if (request.date_from.Value.Date == request.date_to.Value.Date)
    request.date_from = request.date_from.Value.Date;