如何将“2012-01-03 12:50:49”转换为“108929”?

时间:2012-01-06 06:15:30

标签: java mysql datetime datetime-format

我正在尝试从MySQL数据库中获取数据,然后将其插入到我的数据库中。列Start_time具有以下值:

Start_time="2012-01-03 12:50:49"

它旁边的列是start_time_usec,其值为:

start_time_usec="108929"

如何转换为此格式?我如何将我的日期时间转换为这种格式?

2 个答案:

答案 0 :(得分:3)

给出

start_time="2012-01-03 12:50:49";
start_time_usec="108929";

我的假设 (根据我之前评论中解释的逻辑

  

当前时间戳是这样的1325832619(一个10的数字   位)。如果OP(108929)发布的start_time_usec的值是   我认为当前存储在他的数据库中的实际值   该字段是微秒部分(注意值是6位数字   这需要代表微秒部分的时间更多   比假设它是Unix纪元的秒数​​准确   (时间戳)。此外,'usec'部分提示'u'实际上意味着'μ'字符,以μs符号表示微秒。

) 是

start_time_with_micro_sec_precision = start_time + "." + start_time_usec;

换句话说,

  给定示例值的

start_time_with_micro_sec_precision “2012-01-03 12:50:49.108929”

因此,如果您想在新数据库中以微秒精度存储它,
您可以使用当前数据库存储的相同方式 或者你可以像我提到的那样在两个值之上连接并将它存储在具有微秒精度的新mysql datetime字段中。让字符串解析为mysql函数,如STR_TO_DATE(str,format)

例如,

INSERT INTO table_name VALUES ('field1', ... , STR_TO_DATE('2012-01-03 12:50:49.108929', '%Y-%m-%e %H:%i:%s.%f') 

但是如果你需要在Java中再次使用微秒部分,第二种方法可能不太好。

答案 1 :(得分:-1)

我认为'108929'是时间戳。首先你可以将字符串“2012-01-03 12:50:49”解析为Date,然后调用Date.getTime()将返回一个'long'值,即毫秒。

    SimpleDateFormat dateformat1=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    Date d = dateformat1.parse("2012-01-03 12:50:49");
    long timestamp = d.getTime() / 1000;