oracle sql 将13位long类型毫秒时间戳转换成时间字符串
时间: 2023-11-12 13:06:08 浏览: 69
可以使用Oracle SQL的`TO_TIMESTAMP`函数将13位long类型毫秒时间戳转换成时间字符串,具体语法如下:
```
SELECT TO_CHAR(TO_TIMESTAMP('epoch_time' / 1000), 'YYYY-MM-DD HH24:MI:SS.FF')
FROM dual;
```
其中,`epoch_time`表示13位long类型毫秒时间戳,`/ 1000`用于将毫秒转换成秒,`TO_TIMESTAMP`函数将秒数转换成时间戳格式,`TO_CHAR`函数将时间戳格式转换成指定的时间字符串格式,`'YYYY-MM-DD HH24:MI:SS.FF'`表示时间字符串的格式。
例如,假设要将毫秒时间戳`1634056092123`转换成时间字符串,可以执行以下SQL语句:
```
SELECT TO_CHAR(TO_TIMESTAMP('1634056092123' / 1000), 'YYYY-MM-DD HH24:MI:SS.FF')
FROM dual;
```
执行结果为:
```
2021-10-12 18:14:52.123000
```
相关问题
oracle sql 将13位long类型毫秒时间戳的其他字段转换成时间字符串后更新到另一个字段
你可以使用Oracle的`TO_CHAR`函数将毫秒时间戳转换为时间字符串,然后使用`UPDATE`语句将该值更新到另一个字段。具体操作步骤如下:
1. 假设你要更新的表名为`my_table`,包含两个字段`timestamp_millis`和`timestamp_str`,其中`timestamp_millis`为13位long类型毫秒时间戳,`timestamp_str`为时间字符串。
2. 使用以下SQL语句将`timestamp_millis`转换为时间字符串并更新到`timestamp_str`字段:
```sql
UPDATE my_table SET timestamp_str = TO_CHAR(TO_TIMESTAMP(timestamp_millis/1000), 'YYYY-MM-DD HH24:MI:SS.FF3')
```
该语句将先将毫秒时间戳转换为秒级时间戳(因为Oracle中的时间戳是以秒为单位的),再使用`TO_TIMESTAMP`函数将其转换为时间戳类型,最后使用`TO_CHAR`函数将其转换为指定格式的时间字符串。
注意,在`TO_CHAR`函数中,`YYYY-MM-DD HH24:MI:SS.FF3`表示时间字符串的格式,其中:
* `YYYY`表示年份;
* `MM`表示月份;
* `DD`表示日期;
* `HH24`表示小时(24小时制);
* `MI`表示分钟;
* `SS`表示秒;
* `FF3`表示毫秒。
如果需要其他格式的时间字符串,可以根据需要修改`TO_CHAR`函数中的格式参数。
希望这个回答对你有帮助!
fastjson ObjectDeserializer 如何将long类型时间戳转为时间字符串
fastjson 的 ObjectDeserializer 是用于将 JSON 对象反序列化成 Java 对象的接口,它并不负责将时间戳转换为时间字符串,但是可以在自定义的反序列化器中实现这个功能。
例如,假设我们有一个 JSON 对象如下:
```json
{
"timestamp": 1625227066000
}
```
其中,`timestamp` 字段的值是一个 long 类型的时间戳。我们可以定义一个 Java 类来表示这个 JSON 对象:
```java
public class MyObject {
private Date timestamp;
// getter 和 setter 方法省略
}
```
然后,我们可以编写一个自定义的反序列化器,将 long 类型的时间戳转换为时间字符串:
```java
public class MyObjectDeserializer implements ObjectDeserializer {
@Override
public <T> T deserialze(DefaultJSONParser parser, Type type, Object fieldName) {
JSONObject jsonObject = parser.parseObject();
MyObject myObject = new MyObject();
long timestamp = jsonObject.getLongValue("timestamp");
myObject.setTimestamp(new Date(timestamp));
return (T) myObject;
}
@Override
public int getFastMatchToken() {
return 0;
}
}
```
在这个反序列化器中,我们通过 `JSONObject` 类获取 `timestamp` 字段的 long 值,并将其转换成 `Date` 类型。如果需要将 `Date` 类型转换成时间字符串,可以使用 `SimpleDateFormat` 类。
最后,我们可以将自定义的反序列化器注册到 fastjson 的 `ParserConfig` 中:
```java
ParserConfig.getGlobalInstance().putDeserializer(MyObject.class, new MyObjectDeserializer());
```
这样,在反序列化时,fastjson 就会使用我们定义的自定义反序列化器来处理 `MyObject` 类型的对象,从而将时间戳转换为时间字符串。