C# 正在尝试将字符串格式(dd-mm-yyy-hh:mm:ss)转换为(yyy-mm-dd-hh:mm:ss)日期格式
我正在用这种格式的字符串变量从oracle捕获日期C# 正在尝试将字符串格式(dd-mm-yyy-hh:mm:ss)转换为(yyy-mm-dd-hh:mm:ss)日期格式,c#,sql,oracle,C#,Sql,Oracle,我正在用这种格式的字符串变量从oracle捕获日期 string val1=“30-03-2019 16:42:58”并尝试将其以(日期时间)格式存储在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); 期望 str
string val1=“30-03-2019 16:42:58”
并尝试将其以(日期时间)格式存储在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应存储在
日期变量日期\u V asdate\u V=“2019-03-03 16:42:58.000”
错误消息
nvarchar数据类型转换为datetime数据类型导致值超出范围。
语句已终止。Oracle日期实际上没有格式 如果要在数据库中存储字符串,只需告诉oracle这是一个日期,日期为
to\u date
insert into Mytable (thedate)
values
(to_date(:stringval1, 'DD-MM-YY HH24:MI:SS'))
Oracle日期并没有真正的格式 如果要在数据库中存储字符串,只需告诉oracle这是一个日期,日期为
to\u date
insert into Mytable (thedate)
values
(to_date(:stringval1, 'DD-MM-YY HH24:MI:SS'))
您需要首先将日期字符串转换为datetime
string val2= row["t_in_o"].ToString();
Datetime date = DateTime.Parse(val2);
myCommand.Parameters.Add("@t_in_s", SqlDbType.DateTime).Value = date;
您需要首先将日期字符串转换为datetime
string val2= row["t_in_o"].ToString();
Datetime date = DateTime.Parse(val2);
myCommand.Parameters.Add("@t_in_s", SqlDbType.DateTime).Value = date;
首先请注意,您试图用毫秒将值存储到SQL数据库中,但您没有从oracle获得的字符串中的值(由于post summary),因此它将始终为.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");
请注意,我不知道您将值存储在
行[“t_in_o”]
中的类型,因此我将其计为字符串
,如果您将此值转换为日期时间
,则只需删除无用的Convert.ToDataTime
并使用行[“t_in_o”]。ToString(“yyyyy-MM-dd HH:MM:ss.fff”)代码>首先请注意,您试图以毫秒为单位将值存储到SQL数据库中,但您没有从oracle获得的字符串中的值(由于post summary),因此它将始终为.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");
请注意,我不知道您将值存储在行[“t_in_o”]
中的类型,因此我将其计为字符串
,如果您将此值转换为日期时间
,则只需删除无用的Convert.ToDataTime
并使用行[“t_in_o”]。ToString(“yyyyy-MM-dd HH:MM:ss.fff”)代码>为什么要通过C#传递数据?听起来这两个操作都应该是一个SQL语句。@GordonLinoff实际上我的要求是从oracle db中获取值并将其存储在SQL db中,并且每5分钟计划一次oracle和SQL server中的列类型是什么?@sidprashar它的类型是DateTime为什么要通过C#传递数据?听起来这两个操作都应该是一个SQL语句。@GordonLinoff实际上我的要求是从oracle db中获取值并将其存储在SQL db中,并且每5分钟计划一次oracle和SQL server中的列类型是什么?@sidprashar它是DateTime类型这是在oracle中执行的方法,如果您不想先在C#中执行。旁注:如果使用值(日期“2019-03-30”)
形式的,则Oracle日期确实有一种格式。但是这个符号只支持日期,不支持时间。如果你不想先在C#中使用,这是在Oracle中使用的方法。旁注:如果使用值(日期“2019-03-30”)
形式的,则Oracle日期确实有一种格式。但是这个符号只支持日期,不支持时间。而且,Oracle中的date
类型没有毫秒分辨率。您需要时间戳
。但是阅读这个问题,我怀疑这是否是一个要求。@GolezTrol在这种情况下,它真的很奇怪,如果你没有毫秒,你不应该将它们粘贴到SQL,让SQL自己处理它们,如果需要的话,添加.000。或者更改列的类型并使用时间戳
。同样,在SQLdate
type中也没有毫秒(它甚至没有小时),所以这也需要更改为datetime
,我认为你把事情搞混了。Oracle的日期类型表示日期+时间,精度高达1秒。列没有datetime类型。关于datetime
我刚才提到的列的类型SQLSQL只是一个标准。这取决于具体的执行情况。在本例中,它是关于Oracle的,它没有日期时间类型,只有日期类型,实际上也可以包含时间部分。在标准SQL中有不同的日期和时间相关类型。而且,Oracle中的date
类型没有毫秒分辨率。您需要时间戳
。但是阅读这个问题,我怀疑这是否是一个要求。@GolezTrol在这种情况下,它真的很奇怪,如果你没有毫秒,你不应该将它们粘贴到SQL,让SQL自己处理它们,如果需要的话,添加.000。或者更改列的类型并使用时间戳
。同样,在SQLdate
type中也没有毫秒(它甚至没有小时),所以这也需要更改为datetime
,我认为你把事情搞混了。Oracle的日期类型表示日期+时间,精度高达1秒。列没有datetime类型。关于datetime
我刚才提到的列的类型SQLSQL只是一个标准。这取决于具体的执行情况。在本例中,它是关于Oracle的,它没有日期时间类型,只有日期类型,实际上也可以包含时间部分。在标准SQL中,有不同的日期和时间相关类型。