2014年2月28日 星期五

使用 OleDb Provider 如何在 SQL Server 存入完整的 DateTime?

一、問題描述:

使用OleDb Provider將日期時間資料存入SQL Server時,最常遇到的問題是:在Datetime資料型別下,只能存入日期,無法存日時間;因此存入的資料變成:2014/02/28 00.00.00

二、解決方案:

可以使用資料庫預設值,取得存入的時間。但是遇到資料修改後,需要自訂存入日期時間,此時又回到原來的困境;如何存檔呢?

一般使用存檔的語法如下:

OleDbParameter objectdate = new OleDbParameter("@objectdate", OleDbType.DBDate); objectdate.Value = DateTime.Now;
cmd.Parameters.Add(objectdate);

解決方法如下:

OleDbParameter objectdate = new OleDbParameter("@objectdate", OleDbType.DBTimeStamp); objectdate.Value = DateTime.Now.ToUniversalTime();
cmd.Parameters.Add(objectdate);

存入資料庫結果:2014/02/28 11:11:11.111
可以存入完整的日期與時間資料。


objectdate.Value = DateTime.Now.ToUniversalTime();
也可以使用自訂格式:
objectdate.Value =string.Format("{0:yyyy/MM/dd HH:mm:ss.fff}",DateTime.Now);
或是:
objectdate.Value =DateTime.NowToString();