【发布时间】:2015-06-05 10:00:58
【问题描述】:
这是一个关于我的 C#-App 令人困惑的情况的非常简单的问题:
用途:
C# 桌面应用程序/Mysql 5.5
发生了什么:
我的应用程序正在从数据库 (Select date from mytable) 中选择一些数据。 date 列的格式为 yyyy-mm-dd。在我的 C#-App 中检索数据后,我得到了一个文化敏感的输出。就我而言,格式为dd.mm.yyyy。看看我的调试截图。
注意:变量listDate来自string!
我的输出看起来像 DateTime 类型。但我从未将其转换为 dateTime。列(db)date 设置为格式date。
那么为什么我会得到这种格式?是数据库问题还是应用问题?
我的目标是获得与数据库内部相同的yyyy-mm-dd 格式。
感谢每一个帮助。非常感谢!!!
编辑 1:
我的代码:
public static void DB_Select(string s, params List<string>[] lists)
{
try
{
using(var conn = new MySqlConnection(ServerConnection))
{
conn.Open();
MySqlCommand cmd = conn.CreateCommand();
cmd.CommandType = CommandType.Text;
string command = s;
cmd.CommandText = command;
using(var sqlreader = cmd.ExecuteReader())
while (sqlreader.Read())
{
if (sqlreader[0].ToString().Length > 0)
{
for (int i = 0; i < lists.Count(); i++)
{
lists[i].Add(sqlreader[i].ToString());
}
}
else
{
foreach (List<string> save in lists)
{
save.Add("/");
}
}
}
}
}
catch (Exception ex)
{
MessageBox.Show("Error while selecting data from database!\nDetails: " + ex);
}
}
无法想象这可能是问题所在。所有这一切都是循环输出并将单个列保存到不同的传递列表中(params List<string>[])
使用:
Services.DB_Select("SELECT date FROM myTable WHERE something = something")
所以一切都保存在字符串中,没有任何转换。它只是关于选择和输出 db -> c#。我选择一个日期格式并获得一个对文化敏感的 dateTime 值。这怎么可能?
编辑 2:(解决方案)
如果我像SELECT CONCAT(date) FROM mytable... 那样得到它(告诉数据库将 (col)date 作为字符串处理,我会得到干净的输出 yyyy-mm-dd !
没有 concat 我得到我的 dateTime 输出文化敏感。因此,date 列的日期格式一定是个问题。但是为什么 - 真的不知道。
【问题讨论】:
-
你能把你的作品也显示为文本吗?我认为它可以只是一个调试器表示。顺便说一句,您确定 MySQL
date以特定格式保留它的值吗?例如,在 SQL Server 中,它将datetime和datetime2保存为二进制文件。 -
如何将 SELECT 语句放入
listDate变量中?除非我们看到代码,否则我们无能为力。 -
请包含演示问题的(短)代码。(我希望日期列返回为
DateTime值:如果您收到文本,您可能做错了。) -
没问题。不是我太懒了。我只是认为问题会以这种方式可见。我会在几分钟内编辑它。
-
所以这里的这一行将所有内容都转换为字符串
sqlreader[i].ToString()
标签: c# mysql date select culture