[英]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.