无法正确格式化java.sql.Timestamp(yyyy-MM-dd HH:mm:ss.S)为字符串

时间:2015-05-18 09:04:38

标签: java string timestamp

我尝试格式化

<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
} 

$sql = "SELECT id, firstname, lastname FROM MyGuests";
$result = $conn->query($sql);

if ($result->num_rows > 0) {
    // output data of each row
    while($row = $result->fetch_assoc()) {
        echo "id: " . $row["id"]. " - Name: " . $row["firstname"]. " " . $row["lastname"]. "<br>";
    }
} else {
    echo "0 results";
}
$conn->close();
?>

要 等效字符串:

date = 2015-05-07 10:12:14.000243

但我错了价值:

new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.S").format(date);
你能帮帮我吗? 感谢。

1 个答案:

答案 0 :(得分:2)

如果你想获得确切的日期,你需要适当数量的毫秒数字(你刚用1 - S)。

以6位数表示毫秒:

new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSSSSS").format(date);

对于新日期,输出将为:

2015-05-18 12:17:56.000501

详细了解SimpleDateFormat's Date and Time pattern

更新评论:

如果您的日期确实按照描述的方式进行,我提供的答案应该有效。正如Jesper在评论中提到的那样

  

请注意,并非所有数据库都以毫秒精度存储日期

下面我创建了一个新的Date对象,其中包含您提供的确切日期。

SimpleDateFormat sdf =  new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSSSSS");
Date date1 = sdf.parse("2015-05-07 10:12:14.000243");

当您打印出该值时,您将按照您希望的方式获取它:

sdf.format(date1);