MysqlYearProcessor

This commit is contained in:
zgq
2024-06-28 22:30:14 +08:00
parent 786dcd701d
commit b5addde7f8
2 changed files with 63 additions and 0 deletions

View File

@ -44,6 +44,7 @@ public class MysqlValueProcessorFactory {
Map.entry(MysqlColumnTypeEnum.TIMESTAMP.name(), mysqlTimestampProcessor),
Map.entry(MysqlColumnTypeEnum.DATETIME.name(), mysqlTimestampProcessor),
//others
Map.entry(MysqlColumnTypeEnum.YEAR.name(), new MysqlYearProcessor()),
Map.entry(MysqlColumnTypeEnum.BIT.name(), new MysqlBitProcessor()),
Map.entry(MysqlColumnTypeEnum.DECIMAL.name(), new MysqlDecimalProcessor()),
Map.entry(MysqlColumnTypeEnum.BINARY.name(), new MysqlBinaryProcessor())

View File

@ -0,0 +1,62 @@
package ai.chat2db.plugin.mysql.value.sub;
import ai.chat2db.spi.jdbc.DefaultValueProcessor;
import ai.chat2db.spi.model.JDBCDataValue;
import ai.chat2db.spi.model.SQLDataValue;
import java.sql.Date;
import java.util.Calendar;
/**
* 功能描述
*
* @author: zgq
* @date: 2024年06月01日 12:57
*/
public class MysqlYearProcessor extends DefaultValueProcessor {
@Override
public String convertSQLValueByType(SQLDataValue dataValue) {
return dataValue.getValue();
}
@Override
public String convertJDBCValueByType(JDBCDataValue dataValue) {
Date date = dataValue.getDate();
if (!isValidYear(dataValue)) {
return "0000";
}
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
int year = calendar.get(Calendar.YEAR);
String yStr;
String yZerosPadding = "0000";
if (year < 1000) {
yStr = "" + year;
yStr = yZerosPadding.substring(0, (4 - yStr.length())) + yStr;
} else {
yStr = "" + year;
}
return yStr;
}
private boolean isValidYear(JDBCDataValue data) {
byte[] buffer = data.getBytes();
String stringValue = new String(buffer);
return stringValue.length() <= 0
|| stringValue.charAt(0) != '0'
|| !"0000-00-00".equals(stringValue)
&& !"0000-00-00 00:00:00".equals(stringValue)
&& !"00000000000000".equals(stringValue)
&& !"0".equals(stringValue)
&& !"00000000".equals(stringValue)
&& !"0000".equals(stringValue);
}
@Override
public String convertJDBCValueStrByType(JDBCDataValue dataValue) {
return getJdbcValue(dataValue);
}
}