为数据库字段添加日期转换函数 支持mysql和oracle

This commit is contained in:
unknown
2013-06-24 18:44:13 +08:00
parent c97a1f0ac7
commit 8d3523c122
2 changed files with 42 additions and 0 deletions
@@ -682,4 +682,37 @@ public final class JdbcUtils implements JdbcConstants {
return sql.toString();
}
/**
* @author owenludong.lud
* @param columnName
* @param tableAlias
* @param pattern if pattern is null,it will be set {%Y-%m-%d %H:%i:%s} as mysql default value and set {yyyy-mm-dd hh24:mi:ss} as oracle default value
* @param dbType {@link JdbcConstants} if dbType is null ,it will be set the mysql as a default value
*/
public static String formatColumnToDateType(String columnName,String tableAlias,String pattern,String dbType){
StringBuilder sql = new StringBuilder();
if(!StringUtils.isEmpty(columnName)){
if(StringUtils.isEmpty(dbType)) dbType = JdbcConstants.MYSQL;
String formatMethod = "";
if(MYSQL.equalsIgnoreCase(dbType)){
formatMethod = "STR_TO_DATE";
if(StringUtils.isEmpty(pattern)) pattern = "%Y-%m-%d %H:%i:%s";
}else if(ORACLE.equalsIgnoreCase(dbType)){
formatMethod = "TO_DATE";
if(StringUtils.isEmpty(pattern)) pattern = "yyyy-mm-dd hh24:mi:ss";
}else{
//expand date's handle method for other database
}
sql.append(formatMethod).append("(");
if(!StringUtils.isEmpty(tableAlias))
sql.append(tableAlias).append(".");
sql.append(columnName).append(",");
sql.append("'");
sql.append(pattern);
sql.append("')");
}
return sql.toString();
}
}
@@ -23,6 +23,7 @@ import junit.framework.Assert;
import junit.framework.TestCase;
import com.alibaba.druid.pool.DruidDataSource;
import com.alibaba.druid.util.JdbcConstants;
import com.alibaba.druid.util.JdbcUtils;
public class JdbcUtilsTest extends TestCase {
@@ -79,4 +80,12 @@ public class JdbcUtilsTest extends TestCase {
Assert.assertEquals(0, list.size());
}
}
public void test_formatColumnToDateType(){
String colunExp = JdbcUtils.formatColumnToDateType("gmt_create","oo","",JdbcConstants.ORACLE);
Assert.assertEquals("TO_DATE(oo.gmt_create,'yyyy-mm-dd hh24:mi:ss')", colunExp);
String colunExp2 = JdbcUtils.formatColumnToDateType("gmt_create","oo","",JdbcConstants.MYSQL);
Assert.assertEquals("STR_TO_DATE(oo.gmt_create,'%Y-%m-%d %H:%i:%s')", colunExp2);
}
}