Merge pull request #374 from owenludong/master

为非时间类型的字段添加字符串到日期的转换函数
This commit is contained in:
温高铁
2013-06-27 00:03:41 -07:00
2 changed files with 37 additions and 1 deletions
@@ -39,6 +39,9 @@ import com.alibaba.druid.sql.visitor.SchemaStatVisitor;
import com.alibaba.druid.support.logging.Log;
import com.alibaba.druid.support.logging.LogFactory;
import com.alibaba.druid.util.JdbcUtils;
import com.alibaba.druid.util.JdbcConstants;
import com.alibaba.druid.util.StringUtils;
public class SQLUtils {
@@ -240,4 +243,37 @@ public class SQLUtils {
}
return stmtList;
}
/**
* @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 buildToDate(String columnName,String tableAlias,String pattern,String dbType){
StringBuilder sql = new StringBuilder();
if(StringUtils.isEmpty(columnName))
return "";
if(StringUtils.isEmpty(dbType)) dbType = JdbcConstants.MYSQL;
String formatMethod = "";
if(JdbcConstants.MYSQL.equalsIgnoreCase(dbType)){
formatMethod = "STR_TO_DATE";
if(StringUtils.isEmpty(pattern)) pattern = "%Y-%m-%d %H:%i:%s";
}else if(JdbcConstants.ORACLE.equalsIgnoreCase(dbType)){
formatMethod = "TO_DATE";
if(StringUtils.isEmpty(pattern)) pattern = "yyyy-mm-dd hh24:mi:ss";
}else{
return "";
//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();
}
}
@@ -78,5 +78,5 @@ public class JdbcUtilsTest extends TestCase {
List<Map<String, Object>> list = JdbcUtils.executeQuery(dataSource, "select * from user");
Assert.assertEquals(0, list.size());
}
}
}
}