Не удаётся правильно извлечь Date из DateTime

248
06 ноября 2017, 19:23

Как было указано в заголовке, не получается правильно извлечь Date из переменной DateTime. Вот мой код:

internal_pair.Key = "3/31/2001 12:00:00 AM" // Это ключ в Dictionary
IFormatProvider culture = new System.Globalization.CultureInfo("fr-FR", true);
DateTime dateAndTime = DateTime.Parse(internal_pair.Key.ToString(), culture, System.Globalization.DateTimeStyles.AssumeLocal);
var date = dateAndTime.Date;
cmd.Parameters["@DATE_TRIMESTER"].Value = date;

На выходи, в строке

cmd.Parameters["@DATE_TRIMESTER"].Value = date;

Мы всё равно получаем почему то "3/31/2001 12:00:00 AM", вместо "3/31/2001".

UPDATE 1: Весь код.

                Dictionary<string, Dictionary<string, string>> aliasesAndDatesAndValues = dictionary;
                SqlConnection conn = new SqlConnection("Server = homer; Database = RealState_RiskEngine; Integrated Security = True;");
                conn.Open();
                string SQLstr = string.Format("INSERT INTO {0} (ID_ACCOUNT, DATE_TRIMESTER, VALUE)" +
                   "VALUES ('@ID_ACCOUNT', '@DATE_TRIMESTER', '@VALUE')", databaseTable);
                SqlCommand cmd = new SqlCommand(SQLstr, conn);
                cmd.Parameters.Add("@ID_ACCOUNT", System.Data.SqlDbType.VarChar);
                cmd.Parameters.Add("@DATE_TRIMESTER", System.Data.SqlDbType.Date);
                cmd.Parameters.Add("@VALUE", System.Data.SqlDbType.Int);

                foreach (var pair in aliasesAndDatesAndValues)
                {
                    foreach (var internal_pair in (pair.Value)) 
                    {
                        cmd.Parameters["@ID_ACCOUNT"].Value = pair.Key.ToString();
                        IFormatProvider culture = new System.Globalization.CultureInfo("fr-FR", true);
                        DateTime dateAndTime = DateTime.Parse(internal_pair.Key.ToString(), culture, System.Globalization.DateTimeStyles.AssumeLocal);
                        var date = dateAndTime.Date;
                        cmd.Parameters["@DATE_TRIMESTER"].Value = date;

                        if (internal_pair.Value.Equals(""))
                        {
                            cmd.Parameters["@VALUE"].Value = 0;
                        }
                        else
                        {
                            cmd.Parameters["@VALUE"].Value = Int32.Parse(internal_pair.Value);
                        }
                        cmd.ExecuteNonQuery();
                    }
                }

Подскажите, в чём может быть проблема?

P.S. Все эти манипуляции нужны, дабы отправить значение в базу данных SQL Server, в поле типа date.

Answer 1

Исходя из дискуссии в комментариях: SQL запросы не требуют заключения параметров в кавычки. Потому для решения проблемы следует поменять

string SQLstr = string.Format("INSERT INTO {0} (ID_ACCOUNT, DATE_TRIMESTER, VALUE)" +
"VALUES ('@ID_ACCOUNT', '@DATE_TRIMESTER', '@VALUE')", databaseTable);

на

string SQLstr = string.Format("INSERT INTO {0} (ID_ACCOUNT, DATE_TRIMESTER, VALUE)" +
"VALUES (@ID_ACCOUNT, @DATE_TRIMESTER, @VALUE)", databaseTable);
READ ALSO
Как создать новый проект в существующем решении в Visual Studio на Mac?

Как создать новый проект в существующем решении в Visual Studio на Mac?

Как создать новый проект в существующем решении в Visual Studio на Mac?

236
(C#) (WPF) Работа с listBox [требует правки]

(C#) (WPF) Работа с listBox [требует правки]

Люди добрые, помогитеПерешёл с UWP на WPF, по этому не могу простое

313
как создать связь One to Many

как создать связь One to Many

https://githubcom/RobinBuschmann/sequelize-typescript#foreignkey-belongsto-hasmany-hasone-belongstomany-api

225