Получил базу данных SQL Server, имеющую таблицу со столбцом типа «Дата».
При выполнении выбора в таблице с помощью обозревателя объектов SQL Server в Visual Studio значение поля возвращается как «2016-01-17», что является правильным.
Но при выполнении из С#
cmd = new System.Data.SqlClient.SqlCommand("SELECT * FROM MyTable WHERE id = '" + id + "';", conn);
reader = cmd.ExecuteReader();
while (reader.Read())
{
string dateString= String.Format("{0:MM/dd/yyyy}",((DateTime)reader[columnName]));
}
dateString получается 01 17 2016 .. не ожидаемое 17.01.2016
Я также пробовал:
string dateString = ((DateTime)reader[columnName]).ToString("MM/dd/yyyy");
string dateString = String.Format("{0:MM/dd/yyyy}", (reader[columnName]));
Но оба получают одинаковый результат 01 17 2016 без косой черты.
Один последний тест, который я сделал, заключался в том, чтобы просто преобразовать поле в строку без формата, и оно получилось как Sun 17 Jan 00:00:00:
string val = reader[columnName].ToString();
^^ Я собирался спросить вас, ребята, что, черт возьми, происходит, но потом я вспомнил, как пару дней назад я изменил короткую дату в календаре Windows 7 на формат ddd MMM dd (т. е. щелкните календарь в системном трее и измените настройки даты/времени). ).
Я не хочу, чтобы формат даты/времени пользователя в Windows влиял на функцию отображения даты и времени в моем коде C# или SQL Server (это приводит к нарушению ряда вещей, которые зависят от форматирования).
Что я могу сделать, чтобы предотвратить эту проблему?