我在下面的代码中从Facebook获得时间戳
cust_updated_time = obj["updated_time"].ToString();//2013-08-01T02:55:31+0000
abccusttime = cust_updated_time.Substring(0, cust_updated_time.ToString().Length - 3);//2013-08-01T02:55:31+0
这里我试图插入Oracle表
to_date('" + abccusttime + "', 'mm-dd-yyyy hh24:mi:ss')
但我收到错误“不是有效月份”
有什么想法吗?提前谢谢。
答案 0 :(得分:2)
如果这是你的约会对象:
2013-08-01T02:55:31+0
它应该是这样的:
2013-08-01 02:55:31
您可以使用TO_DATE函数(具有正确的掩码格式):
to_date('" + abccusttime + "', 'yyyy-mm-dd hh24:mi:ss')
答案 1 :(得分:1)
当您尝试映射时:
2013-08-01T02:55:31+0
格式为:
mm-dd-yyyy hh24:mi:ss
它不会仅仅因为您的日期组件位于错误的位置而起作用。它预计一开始就会有两位数的月份,但你给它的是20
的世纪,这绝对不是一个有效的月份。
您需要更改数据或映射,以便它们匹配。
答案 2 :(得分:1)
参数化查询可能更容易,但在这种情况下,您的时间格式错误。匹配;
2013-08-01T02:55:31+0000
你需要一个像;
这样的格式yyyy-MM-dd"T"hh24:mi:ss"+0000"
或者,如果您希望预处理格式为零;
yyyy-MM-dd"T"hh24:mi:ss"+0"
示例;
SELECT TO_DATE('2013-08-01T02:55:31+0000', 'yyyy-MM-dd"T"hh24:mi:ss"+0000"') FROM DUAL;
> August, 01 2013 02:55:31+0000
你也可以匹配/处理时区信息,但由于不清楚你设置的结果是什么,我把它遗漏了(TZH
和TZM
会有帮助)
答案 3 :(得分:0)
您想要的Oracle日期格式是mm-dd-yyyy,但facebook时间戳是yyyy-mm-dd。
答案 4 :(得分:0)
你应该做这样的事情;
to_date(:abccusttime, 'mm-dd-yyyy hh24:mi:ss')
然后为abbcusttime设置一个参数,在添加参数时也不要使用撇号('),它不喜欢:)
OracleCommand.Parameters.Add(":abccusttime", OracleDbType.Varchar2).Value = abccusttime;
答案 5 :(得分:0)
您最好使用参数
DateTime updatedtime = obj["updated_time"] as DateTime;
var statement = "..... where Updated_time > :updatedtime";
using (OracleConnection connection = new OracleConnection(connectionString))
using (OracleCommand command = new OracleCommand(statement, connection))
{
command.Parameters.AddWithValue(":updatedtime", updatedtime );
command.Connection.Open();
command.ExecuteNonQuery();
}