// 取得目前時間
COleDateTime oleDate = COleDateTime::GetCurrentTime();
// 包裝為 VARIANT (VT_DATE)
_variant_t vtFld;
vtFld.vt = VT_DATE;
vtFld.date = oleDate;
// 寫入 Recordset
pRecordSet4->PutCollect("date", vtFld);
// 從 Recordset 取得字串形式的值
_bstr_t TheValue = m_pSet->Fields->GetItem("出生年月")->Value;
const char* temp = (char*)TheValue;
// 轉換為 COleVariant 再轉 VT_DATE
COleVariant vtime(temp);
vtime.ChangeType(VT_DATE);
// 指派給 COleDateTime 變數
COleDateTime time4 = vtime;
m_time = time4;
// 更新對話框資料交換 (DDX)
UpdateData(FALSE);
也可以將日期時間格式化為字串直接插入,但 必須符合 SQL Server 採用的日期格式(建議使用 ISO 8601 格式 YYYY-MM-DDTHH:MM:SS 或 YYYYMMDD HH:MM:SS),否則極易因語系、語言設定不同而解析錯誤。
VT_DATE / COleDateTime 是最安全、跨語系的做法,避免字串格式解析問題。PutCollect / GetItem->Value 配合 _variant_t / _bstr_t 是 ADO 操作 BLOB、日期等非純量型別的標準模式。UpdateData(FALSE) 將資料推送至 UI 控制項。