gpt4 book ai didi

c# - 如何从 mysql 查询中存储对象 max(date) 和 min(date)

转载 作者:行者123 更新时间:2023-11-30 21:32:17 25 4
gpt4 key购买 nike

我是 C# 的半新手,我从未存储过来自 mysql 查询的对象。我已经声明了 2 个 Datetimes 变量:

DateTime date_min
DateTime date_max

我想从下面的查询中存储最大(日期)和最小(日期)

string query1 = "SELECT MIN(order_status.BEGIN_DATE) AS 'BEGIN DATE', MAX(order_status.END_DATE) AS 'END DATE' FROM project1.order_status INNER JOIN project1.orders ON orders.ID_ORDER = order_status.ID_ORDER WHERE orders.NUMBER_ORDER = 'TEST';";

比如:max(date) = MAX(order_status.END_DATE)

min(date) = MIN(order_status.BEGIN_DATE)

我想在这个循环中使用:

    for (DateTime date = date_min; date <= date_max; date = date.AddDays(1))
{
string query2 = "SELECT COUNT(leave.ID_PRACOWNIKA) AS 'NUMBER OF WORKERS ON LEAVE' FROM project1.leave WHERE DATE(leave.BEGIN_DATE) <= '"+date+"' AND DATE(leave.END_DATE) >= '"+date+"';";
string query3 = "SELECT TIME_FORMAT(SEC_TO_TIME(SUM(TIME_TO_SEC(order_status.END_DATE) - TIME_TO_SEC(order_status.BEGIN_DATE))), '%H:%i:%s') AS 'TIME OF ALL ORDERS IN DAY' FROM project1.order_status INNER JOIN project1.orders ON orders.ID_ORDER = order_status.ID_ORDER WHERE (DATE(order_status.BEGIN_DATE) = '"+date+"' AND DATE(order_status.END_DATE) = '"+date+"');";
string query4 = "SELECT TIME_FORMAT(SEC_TO_TIME(SUM(TIME_TO_SEC(order_status.END_DATE) - TIME_TO_SEC(order_status.BEGIN_DATE))), '%H:%i:%s') AS 'TIME OF ORDER IN DAY' FROM project1.order_status INNER JOIN project1.orders ON orders.ID_ORDER = order_status.ID_ORDER WHERE (DATE(order_status.BEGIN_DATE) = '"+date+"' AND DATE(order_status.END_DATE) = '"+date+"') AND orders.NUMBER_ORDER = 'TEST';";
}

有人可以告诉我应该写什么样的代码行吗?也许 cmd.Parameters 就足够了?感谢您的帮助。

这是我的代码:

 public partial class GenerateChartsOfOrders : Form
{
DateTime date_min;
DateTime date_max;
public GenerateChartsOfOrders()
{
InitializeComponent();
}
public void loaddata2()
{
string query1 = "SELECT MIN(order_status.BEGIN_DATE) AS 'BEGIN DATE', MAX(order_status.END_DATE) AS 'END DATE' FROM project1.order_status INNER JOIN project1.orders ON orders.ID_ORDER = order_status.ID_ORDER WHERE orders.NUMBER_ORDER = 'TEST';";

for (DateTime date = date_min; date <= date_max; date = date.AddDays(1))
{
string query2 = "SELECT COUNT(leave.ID_PRACOWNIKA) AS 'NUMBER OF WORKERS ON LEAVE' FROM project1.leave WHERE DATE(leave.BEGIN_DATE) <= '"+date+"' AND DATE(leave.END_DATE) >= '"+date+"';";
string query3 = "SELECT TIME_FORMAT(SEC_TO_TIME(SUM(TIME_TO_SEC(order_status.END_DATE) - TIME_TO_SEC(order_status.BEGIN_DATE))), '%H:%i:%s') AS 'TIME OF ALL ORDERS IN DAY' FROM project1.order_status INNER JOIN project1.orders ON orders.ID_ORDER = order_status.ID_ORDER WHERE (DATE(order_status.BEGIN_DATE) = '"+date+"' AND DATE(order_status.END_DATE) = '"+date+"');";
string query4 = "SELECT TIME_FORMAT(SEC_TO_TIME(SUM(TIME_TO_SEC(order_status.END_DATE) - TIME_TO_SEC(order_status.BEGIN_DATE))), '%H:%i:%s') AS 'TIME OF ORDER IN DAY' FROM project1.order_status INNER JOIN project1.orders ON orders.ID_ORDER = order_status.ID_ORDER WHERE (DATE(order_status.BEGIN_DATE) = '"+date+"' AND DATE(order_status.END_DATE) = '"+date+"') AND orders.NUMBER_ORDER = 'TEST';";
}
}
}

最佳答案

您可以使用 ExecuteReader检索值如下,

using (MySqlConnection connection = new MySqlConnection(connectionString))
{
using(var command = new MySqlCommand(query1, con))
{
using(var reader = command.ExecuteReader())
{
while (reader.Read())
{
date_min = Convert.ToDateTime(reader[0]);
date_max = Convert.ToDateTime(reader[1]);
}
}
}
}

希望对您有所帮助。

关于c# - 如何从 mysql 查询中存储对象 max(date) 和 min(date),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55588917/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com