[問題] C語言寫系統日期至MySQL疑問?

看板C_and_CPP作者 (超越自己)時間12年前 (2014/01/28 21:06), 編輯推噓0(0018)
留言18則, 5人參與, 最新討論串1/1
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) Linux --------------------- 先前採用C語言將資訊寫入資料庫內, 現在在資料庫增加一TIME格式的欄位, 想將C語言讀到的時間寫入資料庫,不過卻失敗了。 (查看資料庫內容後,其他資訊沒問題,就是日期那格為0000-00-00) 實在是找不出原因,只好求救板上的前輩, 不曉得是我哪裡漏了嗎!? 部份程式碼如下.. sprintf(sql_buffer,"INSERT INTO solar_test (Solar1_gen,Solar2_gen,Year,Month,Day,Hour,Min,Wday,Datetime) VALUES(\"%f\",\"%f\",\"%d\",\"%d\",\"%d\",\"%d\",\"%d\",\"%d\" ,'\"%d\":\"%d\":\"%d\"')",solar1,solar2,tm.tm_year + 1900,tm.tm_mon + 1, tm.tm_mday,tm.tm_hour,tm.tm_min,tm.tm_wday,tm.tm_hour,tm.tm_min,tm.tm_sec); abc = mysql_query(&mysql,sql_buffer); Datetime目前的格式選擇是TIME。至於Year~Wday為INT格式, 這是早先寫的..考量到為了之後方便取時間區間內資料, 所以想到DATETIME... (目前也有用TIMESTAMP格式,讓MySQL自動記錄時間,但為了以防萬一, 我想還是自己建一個...) 還請板上的先進不吝回答,謝謝^^ -- -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.124.42.70 ※ 編輯: BIAO 來自: 140.124.42.70 (01/28 21:08)

01/28 21:13, , 1F
寫到mysql你要用整串字串才對
01/28 21:13, 1F

01/28 22:24, , 2F
你為什麼不直接用 select now();去取得時間就好
01/28 22:24, 2F

01/28 22:53, , 3F
d大您好,請問您的整串字串是什麼意思呢?
01/28 22:53, 3F

01/28 22:55, , 4F
小弟查找過文件,知道日期格式要加上單引號...@@
01/28 22:55, 4F

01/28 23:03, , 5F
你的 Datetime 欄到底是 DATE 還是 TIME 先搞清楚好嗎
01/28 23:03, 5F

01/28 23:17, , 6F
我是用 odbc 寫入到 Mysql 的,不過你用c應該不會
01/28 23:17, 6F

01/28 23:17, , 7F
差太多,我寫入是直接用 "2014-01-28 23:17:20"
01/28 23:17, 7F

01/28 23:18, , 8F
這樣一整個字串這樣寫進去
01/28 23:18, 8F

01/28 23:19, , 9F
取得的時間格式我不是自己湊的,我直接用
01/28 23:19, 9F

01/28 23:20, , 10F
select now(); 跟 server 要時間
01/28 23:20, 10F

01/28 23:37, , 11F
試著把 sql_buffer 印出來看看就知道了
01/28 23:37, 11F

01/29 18:47, , 12F
datetime一定要 yyyy-mm-dd HH:MM:ss 才是datetime
01/29 18:47, 12F

01/29 18:49, , 13F
就算沒有日期也要湊個 0000-00-00 HH:MM:ss
01/29 18:49, 13F

01/29 18:50, , 14F
吹毛求疵的話還要 'yyyy-mm-ddTHH:mm:ss' 才算數
01/29 18:50, 14F

01/29 18:51, , 15F
找文件不要只找一半
01/29 18:51, 15F

01/29 18:53, , 16F
抱歉,有T那行去掉,MySQL還不直接支援ISO8601。
01/29 18:53, 16F

02/19 15:08, , 17F
謝謝T大的協助^^
02/19 15:08, 17F

02/19 15:13, , 18F
謝謝d大的協助^^
02/19 15:13, 18F
文章代碼(AID): #1IvwjA14 (C_and_CPP)