У меня есть источник данных, откуда извлечь некоторые поля, среди полей есть некоторые даты поля и источник посылает их значения, как этотЕсть ли способ изменить входной формат даты по умолчанию
#DD/MM/YYYY#
почти все поля могут быть отправлены в запрос без модификации, за исключением этого, конечно.
Я написал программу, которая получает данные из интернет-соединения и отправляет ее на сервер MySQL, и она отправляет все как следует, я уверен, потому что я включил общий журнал на сервере MySQL, и я вижу все правильные запросы, за исключением полей с полями даты.
Я хотел бы избежать разбора полей таким образом, потому что это большая работа, так как все написано в c, но если нет способа это сделать, я понимаю и соглашусь с этим в качестве ответа, конечно.
В качестве примера предположим, что мы имели следующий
INSERT INTO sometable VALUES ('#12/10/2015#', ... OTHER_VALUES ..., '#11/10/2015#');
в этом случае я посылаю все это в качестве запроса с использованием mysql_query()
из libmysqlclient
.
В других случаях можно разделить части сообщения в чем-то вроде инструкции и параметры, что-то вроде этого
iab A,B,C,#12/10/2015#,X,Y,#11/10/2015#
что может означать INSERT INTO table_a_something_b_whatever VALUES
, и в этой ситуации, конечно, я захватить все параметры и отправить один запрос со списком VALUES
. Кроме того, в этой ситуации, это довольно просто, потому что я могу справиться с датой, как этого
char date[] = "#11/10/2015#";
int day;
int month;
int year;
if (sscanf(date, "#%d/%d/%d#", &day, &month, &year) == 3)
{
/* it's fine, build a sane YYYY-MM-DD */
}
Так что вопрос:
- Как я могу сказать, сервер MySQL в каком формате поле дат являются?
Разъяснение к: Comment 1
Не обязательно INSERT
, это сложнее, чем это. Иногда это запросы со всеми их параметрами, иногда это просто параметры, и мне приходится строить запрос. Это огромный беспорядок, но я ничего не могу с этим поделать, потому что это платная база данных, и я должен использовать ее на данный момент.
Настоящая проблема заключается в том, когда запрос исходит от источника и должен быть отправлен как есть, потому что тогда может быть много случаев. Когда я разбиваю параметры один за другим, нет реальной проблемы, потому что синтаксический анализ указанного формата даты и генерирование соответствующего значения MySQL довольно прост.
_ "и отправляет его на сервер MySQL" _ - и это означает, что именно? Вы создаете простые инструкции INSERT, которые вы отправляете в базу данных? Если вы можете их изменить, вы можете использовать ['STR_TO_DATE'] (http://dev.mysql.com/doc/refman/5.6/en/date-and-time-functions.html#function_str-to-date) для проанализируйте этот формат в запросах уже. В противном случае вы можете использовать простое текстовое поле, чтобы сначала вставить данные, а затем запустить запрос UPDATE, который использует вышеупомянутую функцию, чтобы передать значение в столбец реальной даты. – CBroe
@CBroe Я добавил некоторые разъяснения. –
Вы не можете это сделать. если ваш столбец не является varchar (и вы не хотите этого делать) отформатируйте дату, прежде чем отправлять на сервер, чтобы быть правильным форматом даты. [heres полезная ссылка] (http://stackoverflow.com/questions/3350465/how-to-change-default-date-format-when-creating-table-in-mysql) –