我有數據從哪裏提取一些領域的來源,該領域中有一些日期場和源將他們的價值觀這樣有沒有辦法來改變默認的日期輸入格式
#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) –