使用 PHP mssql 擴充套件讀取 SQL Server datetime 欄位,直接 SELECT 取得的值無法直接寫入 MySQL,會報錯或資料錯亂。
datetime 精度 3.33ms,格式含毫秒(如 2024-03-12 14:30:45.123)。mssql 驅動回傳格式可能不被 MySQL 原生 DATETIME 解析。DATETIME 精度為秒(5.6.4+ 支援微秒),格式嚴格 YYYY-MM-DD HH:MM:SS。SELECT CONVERT(VARCHAR, datetime欄位, 120) FROM 來源表;
-- 120 = ODBC 標準格式 'YYYY-MM-DD HH:MI:SS(24h)'
範例:
CONVERT(VARCHAR, create_time, 120) -- 產出 '2024-03-12 14:30:45'
SELECT id, CONVERT(VARCHAR, create_time, 120) AS create_time, ... FROM src_tableINSERT INTO dst_table (id, create_time, ...) VALUES (?, ?, ...),參數綁定字串,MySQL 自動轉型。| 代碼 | 格式範例 | 說明 |
|---|---|---|
| 120 | 2024-03-12 14:30:45 | ODBC 標準,推薦 |
| 121 | 2024-03-12 14:30:45.123 | 含毫秒 |
| 112 | 20240312 | 純日期 |
| 108 | 14:30:45 | 純時間 |
bcp "SELECT ... FROM db.dbo.tbl" queryout data.txt -c -t, -S server -U user -P pwd 導出 CSV。LOAD DATA INFILE 或 mysqlimport 高速導入。-- 抽樣比對
SELECT COUNT(*) FROM mysql_tbl;
SELECT COUNT(*) FROM sqlserver_tbl;
-- 隨機抽樣 10 筆比對時間欄位
SELECT create_time FROM mysql_tbl ORDER BY RAND() LIMIT 10;
SELECT CONVERT(VARCHAR, create_time, 120) FROM sqlserver_tbl ORDER BY NEWID() LIMIT 10;