我有数据从哪里提取一些领域的来源,该领域中有一些日期场和源将他们的价值观这样有没有办法来改变默认的日期输入格式
#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) –