簡體   English   中英

嘗試以(yyyy-mm-dd hh:mm:ss)日期格式轉換字符串格式(dd-mm-yyyy hh:mm:ss)

[英]Trying to convert string format (dd-mm-yyyy hh:mm:ss) in (yyyy-mm-dd hh:mm:ss) date format

我正在以這種格式的字符串變量從字符串中捕獲來自oracle的日期string val1 = "30-03-2019 16:42:58"並嘗試以(datetime)格式將其存儲在sql數據庫中,例如val2 = "2019-03-03 16:42:58.000"

從Oracle DB中將日期存儲在字符串變量中

string val2 = row["t_in_o"].ToString();

並像這樣插入sql

myCommand.Parameters.AddWithValue("@t_in_s",val2);

預期

string val2="30-03-2019 16:42:58"

字符串變量val2應該存儲在日期變量date_V中,作為date_V="2019-03-03 16:42:58.000"

錯誤消息從nvarchar數據類型到datetime數據類型的轉換導致值超出范圍。 該語句已終止。

您需要先將日期字符串轉換為datetime。

string val2= row["t_in_o"].ToString(); 
Datetime date = DateTime.Parse(val2);

myCommand.Parameters.Add("@t_in_s", SqlDbType.DateTime).Value = date;

Oracle日期實際上沒有格式。

如果要在數據庫中存儲字符串,只需告訴oracle它是一個帶有to_date的日期

insert into Mytable (thedate)
values 
(to_date(:stringval1, 'DD-MM-YY HH24:MI:SS'))

首先請注意,您試圖以毫秒為單位向SQL數據庫存儲值,但是沒有從oracle獲取的字符串形式(由於發布摘要),因此該值始終為.000。

但是您可以使用以下代碼完成此操作:

    string val2 = DateTime.ParseExact(row["t_in_o"].ToString(), "dd-MM-yyyy HH:mm:ss", 
                                        CultureInfo.InvariantCulture)
                                        .ToString("yyyy-MM-dd HH:mm:ss.fff");

請注意,我不知道將值存儲在row["t_in_o"]類型是什么,因此我將其視為string ,如果您已將該值轉換為DateTime ,則只需刪除無用的Convert.ToDataTime並使用row["t_in_o"].ToString("yyyy-MM-dd HH:mm:ss.fff");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM