TIMESTAMP(0) WITH TIMEZONE
유형의 열이있는 테이블에 대한 업데이트를 시도하고 있습니다.데이터베이스의 TIME ZONE 값을 사용하여 Oracle TIMESTAMP (0)을 (를) 업데이트하는 적절한 방법
TIMESTAMP
이 데이터베이스에 쓰여지는 방식이 미국 동부 표준시의 오프셋 형식 (예 : -05:00
)이 아니기 때문에 여러 가지 방법을 시도해 보았습니다. 시간대로 AMERICA/NEW_YORK
을 사용하여 저장되었으므로 다른 응용 프로그램에서이 문제를 제대로 처리 할 수 없습니다.
현재 : 28-NOV-16 10.51.43.000000000 AM AMERICA/NEW_YORK
원하는 : 28-NOV-16 10.51.43.000000000 AM -05:00
여기
많은 게시물은 데이터베이스에서 검색있어 데이터의 서식을 주로 이야기; 다른 예제는 C#이 아닌 SqlPlus를 사용하여 설명합니다.
Using(OracleConnection conn = new OracleConnection(......))
{
OracleCommand cmd = new OracleCommand();
cmd.Connection = conn;
cmd.BindByName = true;
cmd.CommandText = "update customer set email_addr = :EMAIL, modified_date= SYSDATE
where cust_id = :CUSTID";
conn.Open();
cmd.Parameters.Add("EMAIL", OracleDbType.Varchar2).Value = txtEmail.Text;
cmd.Parameters.Add("MODIFIED_DATE", OracleDbType.Varchar2).Value = OracleDate.GetSysDate().ToOracleTimeStamp();
cmd.Parameters.Add("CUSTID", OracleDbType.Decimal).Value =Convert.ToDecimal(Session["ID"]);
cmd.ExecuteNonQuery();
}
나는 또한 modified_date=to_timestamp(:modified_date, 'MM/DD/YYYY HH:mi:ss')
시도했지만이 같은하지 올바른 형식의 시간대를 예외를 생성합니다.
C#에서이 작업을 수행하는 적절한 방법은 무엇입니까? 날짜/타임 스탬프 열은 항상 문자열의 변환으로 작성해야합니까?
이것은 정확히 내가 필요로하는 것이었고 세션 매개 변수를 설정하는 또 다른 질문에 대한 대답입니다. 고맙습니다! BTW 내가 SYSTIMESTAMP를 사용할 때 정확한 시간대를 자동으로 얻을 수 있으므로 실제로'AT TIME ZONE'을 사용할 필요가 없습니다. 다시 감사합니다. – Mobilemike