【问题标题】:How to get the numerical/integer format of date time using mysql or java? [duplicate]如何使用 mysql 或 java 获取日期时间的数字/整数格式? [复制]
【发布时间】:2017-01-27 02:46:17
【问题描述】:

我想将 2017 年 5 月 1 日 12:15:00 PM 转换为 1493612100000

然后将其转换为字符串。在 Java 和 MySQL 中是否可行?如何实现?

【问题讨论】:

  • String 解析为DateLocalDateTime 对象,从中获取“millis”值,让自己崩溃。问题是,您将丢失时区上下文,但由于您的格式中没有 TZ,这可能已经是一个问题:P
  • 什么是“2017 年 5 月 1 日下午 12:15:00”?这是String 吗? Date? LocalDateTime?它是数据库列吗?你想做什么?
  • 您似乎有两个基本问题,将日期转换为有效的DateLocalDateTime 对象,周围有很多这样的例子;从所述对象中获取毫秒值,同样,周围有很多这样的例子。如果您不打算做出某种努力来解决问题,请不要期望其他人也这样做。如果尝试某事并遇到困难,我们随时为您提供帮助
  • 如果我们知道您是在 Java 还是 MySQL 中从这个日期开始,这将有所帮助。
  • 附带说明,您可以将 Java LocalDateTime 转换为 java.sql.Timestamp,JDBC 可以使用它在 MySQL 中设置各种类型的日期字段。

标签: java mysql datetime-format


【解决方案1】:

您可以在 MySQL 中分两步完成此操作。首先,使用STR_TO_DATE() 将字符串时间戳转换为datetime,然后使用UNIX_TIMESTAMP() 将该日期转换为自纪元以来的毫秒数。

SELECT 1000*UNIX_TIMESTAMP(STR_TO_DATE(col, '%M %e, %Y %h:%i:%s %p')) AS millis
FROM yourTable

这将返回自纪元以来的毫秒数,这是您的示例数据所指的时间。

演示在这里:

SQLFiddle

【讨论】:

  • 我试过了,它返回所有(NULL)数据
  • 我使用 MyTable 中的 SELECT UNIX_TIMESTAMP(Start_Date) 解决了它...但不完全是我的问题中显示的数值
【解决方案2】:

1493612100000 是什么意思?如果它只是可比较的整数,你 可以使用下一个解决方案。

Mysql 有函数 UNIX_TIMESTAMP 可以这样使用:

SELECT UNIX_TIMESTAMP(`table`.`date`) from `table` WHERE ...;

要将字符串转换为日期,请使用:

STR_TO_DATE('May 1, 2017 12:15:00 PM', '%M %d, %Y %h:%i:%s%p')

一起:

SELECT UNIX_TIMESTAMP( STR_TO_DATE( ... ) )

【讨论】:

  • “我想将 2017 年 5 月 1 日 12:15:00 PM 转换为……” - UNIX_TIMESTAMP 会这样做吗?跨度>
  • 这是我的答案的副本,格式掩码错误。秒和AM/PM之后有一个空格。
  • 没有您的评论中提到的答案副本,它的掩码有所不同。那是第一。第二:我的回答显示另一个函数作为它的名字作为它的参数。
  • 我不确定 1493612100000 是什么,这是使用此命令自动提取的 Fieldcolumn.getTime() 或完全一样 $F{start_date}.getTime()
猜你喜欢
  • 2020-11-12
  • 1970-01-01
  • 2019-08-23
  • 2019-12-22
  • 2014-06-10
  • 1970-01-01
  • 2022-01-09
  • 2020-06-02
  • 1970-01-01
相关资源
最近更新 更多