【问题标题】:How to insert string type timestampto in to sql server 2008 r2 table如何将字符串类型 timestampto 插入到 sql server 2008 r2 表中
【发布时间】:2014-07-29 06:28:36
【问题描述】:

我正在尝试将 excel 文件中的记录插入数据库表中。 excel 文件包含时间戳为“05/10/13 03:47 PM IST”。我想将数据库中的时间戳保存为日期时间,以便稍后我可以触发对日期时间约束的查询。在java中我使用准备好的语句。我在表中使用 datetime2(7) 数据类型。

timeStampt 的值 = 05/10/13 03:47 PM IST

private void insertToDb(String vh, String timeStamp, String location, double tempReal, double tempFixed) throws ParseException{
        conn = DbHandler.getConnection();
        SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yy hh:mm a");
        java.util.Date utilDate = sdf.parse(timeStamp);

        java.sql.Date sqlDate =  new java.sql.Date(utilDate.getTime());

        String query = "INSERT INTO [DATALOGGER_TEMP_REPORT](vehicle_no,time_stamp,location,temp_real,temp_fixed)values(?,?,?,?,?)";
        try {
            pstmt= conn.prepareStatement(query);
            pstmt.setString(1,vh);
            pstmt.setDate(2, sqlDate);//(2, date);
            pstmt.setString(3, location );
            pstmt.setDouble(4, tempReal);
            pstmt.setDouble(5, tempFixed);
            pstmt.executeUpdate(); // execute insert statement
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }

目前,数据库表中的时间戳值存储为 = 2013-10-05 00:00:00.0000000

相反,我希望我的表将时间戳存储为 05/10/13 03:47 PM IST

【问题讨论】:

    标签: java sql sql-server-2008 jdbc


    【解决方案1】:

    这里的问题取决于您尝试将哪种类型的列存储到 sql server db 中。

    http://msdn.microsoft.com/en-us/library/ms186724.aspx

    如果你只是使用 SQL Date 类型,那么这只有一天的准确性。

    我假设java.util.Date utilDate 正确地保存了日期时间。

    【讨论】:

    • java.util.Date 正确保存了日期时间,但是当我尝试将其插入数据库时​​,我得到了 java.util.Date 无法转换为 java.sql.Date 的异常。
    • 请发布您的例外情况。
    【解决方案2】:

    尝试使用java.sql.Timestamp 类型而不是java.sql.Date。这应该是适当的。它的工作方式与java.sql.Date 相同。

    您的代码将包含:

    ....
    java.sql.Timestamp sqlTS = new.java.sql.Timestamp(utilDate.getTime());
    
    ...
    
    pstmt.setTimestamp(2, sqlTS);
    ...
    

    【讨论】:

    • java.sql.Date 保存数据到毫秒,OP 只需要到分钟
    • 我得到 java.lang.ClassCastException: java.util.Date cannot be cast to java.sql.Timestamp at com.bfpl.servlet.UploadServlet.insertToDb(UploadServlet.java:356)将 java.sql.Date 更改为 java.sql.Timestamp; -------------------------------------------------- --------------- SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yy hh:mm a"); java.util.Date utilDate = sdf.parse(timeStamp); java.sql.Timestamp sqlDate = (Timestamp) utilDate;
    • 非常感谢。它现在正在工作。但是它将数据插入为 2013-10-18 00:22:00.0000000,我需要重新生成包含 dd/MM/yy hh:mm 格式的时间戳的 excel,有什么方法可以转换 2013-10 -18 00:22:00.0000000 回到 18/10/13 12:22 AM IST
    • 有两种方法:在 SELECT 语句中使用 SQL 函数(TO_CHARCONVERT)并可​​以通过 getString 使用 java 检索它,或者将其检索为 @ 987654328@对象。在您的情况下,SQL 版本听起来更容易,但如果您将来想对数据做其他事情,TimeSTamp 对象会更好。
    猜你喜欢
    • 2014-10-30
    • 1970-01-01
    • 2023-03-04
    • 1970-01-01
    • 2011-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多