Изменение формата даты - PullRequest
       4

Изменение формата даты

1 голос
/ 07 января 2011

У меня есть переменная DateTime (скажем, отметка времени), которая содержит дату в ее обычном формате, например:

11/1/2011

Эта переменная используется для построения команды SQL. База данных Oracle принимает даты только в формате

YYYY-MM-DD

Как я могу манипулировать моей переменной, чтобы сохранить дату в этом формате?

Ответы [ 4 ]

8 голосов
/ 07 января 2011

Не форматировать дату, чтобы включить ее в SQL вообще.

Используйте параметризованный запрос , а затем просто включите значение в качестве параметра. Таким образом, вам вообще не нужно правильно форматировать.

Вы должны использовать параметризованные запросы для всех данных - кроме форматирования, он также защищает вас от атак SQL-инъекций.

Получение формата даты / времени, который подходит для конкретной установки Oracle, которую вы используете прямо сейчас, не - правильное решение. Делайте это правильно: избегайте включения данных в ваш код (SQL).


По другому вопросу ваш вопрос делает неверные предположения для начала. Переменная DateTime вообще не содержит значения в «обычном формате», так же как int не содержит десятичное или шестнадцатеричное представление числа. DateTime вообще не хранит текст внутри - он хранит несколько тиков. Как это отформатировано, когда вы звоните ToString, зависит от всех видов культурных аспектов. Стоит отделить понятие фундаментального значения, представленного типом, от строкового представления , которое вы можете получить, вызвав ToString.

4 голосов
/ 07 января 2011

Я предполагаю, что вы отправляете дату в виде строки в команде SQL.

DateTime date = ...your object...;
string formattedDate = date.ToString("yyyy-MM-dd");

Если она в строковом формате, то вам нужно сначала проанализировать ее.По вашей строке трудно понять, день это / месяц / год или месяц / день / год.

Но вы можете сделать что-то вроде этого:

string sDateTime = "11/1/2011";
DateTimeFormatInfo format = new DateTimeFormatInfo();
format.ShortDatePattern = "dd/MM/yyyy"; // or MM/dd/yyyy
DateTime date = DateTime.Parse(sDateTime, format);
string formattedDate = date.ToString("yyyy-MM-dd");
1 голос
/ 07 января 2011

Попробуйте это:

string oracleTimeFomatDate = DateTime.Now.ToString("yyyy-MM-dd")
1 голос
/ 07 января 2011
var dt = DateTime.Now;
var formatted = dt.ToString("yyyy-MM-dd");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...