我正在使用这种格式的字符串变量从oracle捕获日期
string val1 = "30-03-2019 16:42:58"
,并尝试以(datetime)格式将其存储在sql数据库中,例如val2 = "2019-03-03 16:42:58.000"
从Oracle数据库中将日期存储在字符串变量中
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数据类型的转换导致值超出范围。 该声明已终止。
答案 0 :(得分:2)
您需要先将日期字符串转换为datetime。
string val2= row["t_in_o"].ToString();
Datetime date = DateTime.Parse(val2);
myCommand.Parameters.Add("@t_in_s", SqlDbType.DateTime).Value = date;
答案 1 :(得分:1)
Oracle日期实际上没有格式。
如果要在数据库中存储一个字符串,只需告诉oracle这是一个to_date
的日期
insert into Mytable (thedate)
values
(to_date(:stringval1, 'DD-MM-YY HH24:MI:SS'))
答案 2 :(得分:-1)
首先请注意,您试图以毫秒为单位将值存储到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
,已经删除了无用的{{ 1}},并使用Convert.ToDataTime