У меня есть .Net webapp, который подключается к бэкэнду Oracle. У меня есть базовая страница, на которой каждая страница использует, где я устанавливаю
protected override void OnPreInit(EventArgs e)
{
System.Globalization.CultureInfo cultureInfo =
new System.Globalization.CultureInfo("en-CA");
// Creating the DateTime Information specific to our application.
System.Globalization.DateTimeFormatInfo dateTimeInfo =
new System.Globalization.DateTimeFormatInfo();
// Defining various date and time formats.
dateTimeInfo.DateSeparator = "/";
dateTimeInfo.LongDatePattern = "dd-MMM-yyyy";
dateTimeInfo.ShortDatePattern = "dd-MMM-yyyy";
dateTimeInfo.MonthDayPattern = "dd/MM";
dateTimeInfo.LongTimePattern = "HH:mm";
dateTimeInfo.ShortTimePattern = "HH:mm";
dateTimeInfo.FullDateTimePattern = "dd-MMM-yyyy";
// Setting application wide date time format.
cultureInfo.DateTimeFormat = dateTimeInfo;
// Assigning our custom Culture to the application.
//Application.CurrentCulture = cultureInfo;
Thread.CurrentThread.CurrentCulture = cultureInfo;
Thread.CurrentThread.CurrentUICulture = cultureInfo;
base.OnPreInit(e);
}
В моем приложении я использую OracleDataAdapter для выполнения простых текстовых запросов в базе данных. Я фильтрую даты как таковые
"MyDateColumn" = '01-Jan-2000'
Это хорошо работает на моем местном. Однако, когда я добираюсь до сервера, единственные даты, которые работают в моем фильтре, находятся в формате
"MyDateColumn" = '2000 Jan 01'
Что мне не хватает?
вы всегда должны явно сравнивать столбцы DATE
с значениями DATE, i-e:
"MyDateColumn" = to_date('01-Jan-2000', 'dd-Mon-yyyy')
Никогда не полагайтесь на неявное преобразование даты.
Где dt - переменная типа DateTime, попробуйте следующее
to_date (' "+ dt.ToString(" MM/dd/yyyy HH: mm: ss ") +" ', 'MM/dd/yyyy HH: mi: ss')
Try:
"MyDateColumn" = to_date('01-Jan-2000','DD-MON-YYYY')
вместо того, чтобы полагаться на неявные преобразования из строки на дату.