繁体   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