В моем Java-коде есть несколько операторов Oracle SQL, которые часто разбиты на отдельные части, что затрудняет поиск эквивалентного оператора в SQL Server 2017. Вот пример:
if (typeId >= 1 && typeId <= 5)
{
sql = "SELECT t.run_id, t.tran_id, t.tran_id sort_id, t.tran_type, t.prod_id, t.type_id, t.value, " +
getExtractStatement() + " (year from t.tran_datetime) y, " +
getExtractStatement() + " (month from t.tran_datetime) mo, " +
getExtractStatement() + " (day from t.tran_datetime) d, " +
" to_number(to_char (t.tran_datetime, 'HH24')) h, " +
" to_number(to_char (t.tran_datetime, 'MI')) mi, " +
" to_number(to_char (t.tran_datetime, 'SS')) s, " +
" to_number(to_char (t.tran_datetime, 'FF')) ms " +
" FROM tran_calc_group t, mai_group_log m " +
" WHERE t.run_id = m.run_id and m.group_id = 1 " +
" AND m.mai_class_id = %d " +
" AND t.result_group_id = m.level_1 " +
" AND t.result_group_id_2 = m.level_2 " +
" AND t.result_group_id_3 = m.level_3 " +
" AND t.result_group_id_4 = m.level_4 " +
" AND t.prod_id = " + query.getProdId() +
" AND t.run_id IN (" + runLogIds + ")" +
" AND t.type_id = " + typeId;
}
Если бы это был только обычный оператор to_char
с аргументом YYYY-MM-DD, например, я мог бы просто использовать GETDATE(), 20
в SQL Server, но я не знаю, как это сделать для такого оператора разбиения
" to_number(to_char (t.tran_datetime, 'HH24')) h, " +
" to_number(to_char (t.tran_datetime, 'MI')) mi, " +
" to_number(to_char (t.tran_datetime, 'SS')) s, " +
" to_number(to_char (t.tran_datetime, 'FF')) ms " +
Я пытался преобразовать его с помощью инструмента (SQLines), но он не работал.