У меня есть этот запрос:
SqlCommand cmdImpRN = new SqlCommand("SELECT COUNT(*) FROM copies WHERE DATEADD(dd, 0, DATEDIFF(dd, 0, DATE_TIME_COLUMN)) = @Date;", conn);
cmdImpRN.Parameters.AddWithValue("@Date", DateTime.Now.ToString("MM-dd-yyyy"));
n_i_rn = (int)cmdImpRN.ExecuteScalar();
Этот запрос предназначен для возврата числа наборов копий, чья дата DATE_TIME_COLUMN (не время) равна сегодняшней дате.В настоящее время я выполняю развертывание в различных локальных средах .NET Framework, поэтому я гарантирую, что @Date будет добавлен как «MM-dd-yyyy» и будет работать нормально, пока какой-нибудь клиент не купит и не установит SQL Server на испанском языке.Теперь приложение не работает для этого исключения, например:
преобразование типа данных nvarchar в тип данных datetime привело к значению вне допустимого диапазона
Кажется, я могу заставить его работать так:
cmdImpRN.Parameters.Add(new SqlParameter("@Date", SqlDbType.Date){Value = DateTime.Now })
Но я не уверен, так ли это.Зачем?Потому что я не знаю, возвращает ли DateTime.Now разные значения для разных установленных языков .NET Framework, и потому что я не знаю, создаст ли этот конструктор допустимый объект Date, независимо от того, будет ли возвращение DateTime.Now в MM-dd-формат гггг или дд-мм-гггг формат.
Любой совет?Заранее спасибо.