SQL Server中不存在的Oracle日期时间



我有一个java程序,其中一些SQL语句的声明方式如下:

public ObservableList<TSTTimeZoneConversion> retrieveTimeZoneConversions() throws TSTDBException
{
String sql = "";
if (DBConnection.getDbType() == DBConnection.DB_ORACLE)
sql = "SELECT tzc.tzc_id, tzc.tz_id, tzc.offset_to_utc, 
to_char( tzc.start_time, 'DD-MM-YYYY HH24:MI' ) start_time, 
to_char( tzc.end_time, 'DD-MM-YYYY HH24:MI' ) end_time, tz.tz_code 
FROM timezone_conversion tzc, timezone tz WHERE tzc.tz_id = tz.tz_id ORDER BY tzc_id";
else
sql = "SELECT STATEMENT FOR SQL SERVER";
return TSTDB.retrieveDB(sql , TSTDB::TSTTimeZoneConversionMapper);
}

我的问题是,例如,这个DD-MM-YYYY HH24:MI在SQL Server中不存在,我不知道如何定义带时间的日期。我在文档中建议的FORMAT中尝试过它,但我不知道它在这种情况下到底是如何工作的。

我的目标是在else部分创建一个SQL Server查询,它相当于if部分中的oracle查询。我正在使用SQL Server 2017。

我找不到与SQL Server的CONVERT函数匹配的格式掩码。但是FORMAT在这里似乎工作得很好,假设您的SQL Server版本支持它:

SELECT
tzc.tzc_id,
tzc.tz_id,
tzc.offset_to_utc,
FORMAT(tzc.start_time, 'dd-MM-yyyy HH:mm', 'en-US') start_time,
FORMAT(tzc.end_time, 'dd-MM-yyyy HH:mm', 'en-US') end_time,
tz.tz_code 
FROM timezone_conversion tzc
INNER JOIN timezone tz
ON tzc.tz_id = tz.tz_id
ORDER BY
tzc_id;

注:大写HH表示24小时时钟上的小时数。对于12小时时钟上的小时,请使用小写hh

最新更新