in empire-db/src/main/java/org/apache/empire/dbms/sqlserver/DBMSHandlerMSSQL.java [459:497]
public String getConvertPhrase(DataType destType, DataType srcType, Object format)
{
switch(destType)
{
case BOOL: return "convert(bit, ?)";
case INTEGER: return "convert(int, ?)";
case DECIMAL:
if (format instanceof Number)
{ // Format should be a float, double or BigDecimal with prec.scale
return "convert(decimal("+format.toString().replace('.', ',')+"), ?)";
}
// plain
return "convert(decimal, ?)";
case FLOAT: return "convert(float, ?)";
case DATE: return "convert(date, ?, 111)";
case TIME: return "convert(time, ?)";
case DATETIME:
case TIMESTAMP: return isUseDateTime2() ? "convert(datetime2, ?, 121)"
: "convert(datetime, ?, 121)";
// Convert to text
case VARCHAR:
case CHAR:
case CLOB:
// Date-Time-Format "YYYY-MM-DD"
if (srcType==DataType.DATE)
return "convert(nvarchar, ?, 111)";
// Date-Time-Format "YYYY-MM-DD hh.mm.ss"
if (srcType==DataType.DATETIME || srcType==DataType.TIMESTAMP)
return "convert(nvarchar, ?, 120)";
// other
return "convert(nvarchar, ?)";
case BLOB:
return "convert(varbinary, ?)";
// Unknown Type
default:
log.error("getConvertPhrase: unknown type " + destType);
return "?";
}
}