【发布时间】:2019-04-19 11:59:02
【问题描述】:
我的 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;
}
如果它只是一个带有 YYYY-MM-DD 参数的普通 to_char 语句,我可以在 SQL Server 中使用 GETDATE(), 20 但我不知道如何为这样的拆分语句执行此操作
" 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)对其进行转换,但没有成功。
【问题讨论】:
-
你的 SQL Server 是哪个版本的?
-
是 SQL Server 2017
标签: java sql sql-server oracle migration