Конвертировать Datetime из MVC в Oracle в нескольких форматах даты / времени? - PullRequest
0 голосов
/ 10 июля 2019

Это запрос на обновление в моем проекте

string updateCurrentFlow = "update tc_lsn_file set tc_lsn10 = '2',tc_lsn12=to_date('" + DateTime.Now.ToString("dd/MMM/yyyy HH:mm:ss", new CultureInfo("en-US")) + "','DD/MM/YYYY HH24:MI:SS') " +
" where tc_lsn01 =:DocNo and tc_lsn02 =:FlowNo and tc_lsn05 =:Plant and tc_lsn09 =:UserName";

Я пробовал много способов обновить Datetime

to_date('" + DateTime.Now.ToString("dd/MMM/yyyy HH:mm:ss", CultureInfo.InvariantCulture) + "', 'DD/MON/YYYY HH24:MI:SS')

to_date('" + DateTime.Now.ToString("dd/MMM/yyyy HH:mm:ss") + "','DD/MON/YYYY HH24:MI:SS')

to_date('" + DateTime.Now.ToString("dd/M/yyyy HH:mm:ss") + "','DD/MM/YYYY HH24:MI:SS')

Но когда я меняю формат datetime на компьютере, это ошибка. Мои компьютерные форматы включают в себя Вьетнам, Тайвань и английский - US

Это код при точном запросе

cmd.CommandType = CommandType.Text;
//Update CurrentFlow
cmd.CommandText = updateCurrentFlow;
cmd.Parameters.Add(new OracleParameter("DocNo", DocNo));
cmd.Parameters.Add(new OracleParameter("FlowNo", FlowNo));
cmd.Parameters.Add(new OracleParameter("Plant", Plant));
cmd.Parameters.Add(new OracleParameter("UserName", UserName));
//cmd.Parameters.Add("DateNow", OracleDbType.Date).Value = DateTime.Now;
currentSigningFlowRowAffected = cmd.ExecuteNonQuery();

Я не знаю, как это решить? Я перепробовал много разных способов, пожалуйста, помогите. Большое спасибо

1 Ответ

2 голосов
/ 10 июля 2019

Просто используйте строку SQL следующим образом:

string updateCurrentFlow = "update tc_lsn_file set tc_lsn10 = '2',tc_lsn12 = :theDate 
    where tc_lsn01 =:DocNo and tc_lsn02 =:FlowNo and tc_lsn05 =:Plant and tc_lsn09 =:UserName";

cmd.Parameters.Add("theDate ", OracleDbType.Date, ParameterDirection.Input).Value = DateTime.Now;
cmd.Parameters.Add(new OracleParameter("DocNo", DocNo));
cmd.Parameters.Add(new OracleParameter("FlowNo", FlowNo));
cmd.Parameters.Add(new OracleParameter("Plant", Plant));
cmd.Parameters.Add(new OracleParameter("UserName", UserName));

Драйвер выполняет правильное преобразование, если это необходимо, вам не нужно об этом заботиться.

Или, может быть, еще проще:

string updateCurrentFlow = "update tc_lsn_file set tc_lsn10 = '2',tc_lsn12 = SYSDATE
    where tc_lsn01 =:DocNo and tc_lsn02 =:FlowNo and tc_lsn05 =:Plant and tc_lsn09 =:UserName";

cmd.Parameters.Add(new OracleParameter("DocNo", DocNo));
cmd.Parameters.Add(new OracleParameter("FlowNo", FlowNo));
cmd.Parameters.Add(new OracleParameter("Plant", Plant));
cmd.Parameters.Add(new OracleParameter("UserName", UserName));
...