首页 > 解决方案 > 时间戳数据库值在处理前显示为已处理

问题描述

通常这只是我自己没有SimpleDateFormatter正确使用,但是在将Timestamp字段从数据库中取出的过程中,在任何处理发生之前,在最低级别,时间戳值显示为

2017 年 11 月 10 日 10:19:46

看起来它已经被作为其他东西处理了。我期待 YYYY-MM-dd HH:mm:ss 作为格式。

MySql 数据库列是some_column_name TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP,加载这个值的代码在这里;

public Object loadSingle(DBInterface obj, String operator, PreparedStatement ps)
{
    Object results = null;
    ResultSet rs = null;
    try
    {
        Field[] field = obj.getClass().getDeclaredFields();

        rs = ps.executeQuery();
        Object working = null;

        if (rs.next())
        {
            working = obj.getClass().newInstance();
            for (Field fieldLoop : field)
            {
                if (!Modifier.isPrivate(fieldLoop.getModifiers()))
                {
                    fieldLoop.setAccessible(true);

                    if (fieldLoop.getType().getName().compareTo("java.lang.String") == 0)
                    {
                        fieldLoop.set(working, rs.getString(fieldLoop.getName()));
                    }
                    else
                    {
                        if (fieldLoop.getType().getName().compareTo("java.util.Date") == 0)
                        {
                            fieldLoop.set(working, rs.getDate(fieldLoop.getName()));
                        }
                        else
                        {
                            if (fieldLoop.getType().getName().compareTo("java.sql.Timestamp") == 0)
                            {
                                fieldLoop.set(working, rs.getTimestamp(fieldLoop.getName()));
                            }

我正在使用的所有其他对象,包括许多具有Timestamp值的对象都处理得很好。我已经对此进行了调试,并且可以看到在 . 谁能告诉我为什么会这样?

========编辑

它实际执行的查询是;

String sql = "SELECT * FROM sometable WHERE id = ? ";
ps = conn.prepareStatement(sql);
ps.setInt(1, id);

标签: java

解决方案


推荐阅读