【问题标题】:SQL convert string in the form of yyyy-MM-ddThh:mm:ssZ to datetimeSQL将yyyy-MM-ddThh:mm:ssZ形式的字符串转换为日期时间
【发布时间】:2020-05-04 17:32:18
【问题描述】:

我有一个字符串格式的变量,比如2019-11-25T14:22:56.529Z。我需要提取这个字符串变量的日期部分并提取所有具有最新日期的记录。

ID   time (in string format, not a timestamp yet)
-------------------------------
1    2019-11-25T15:20:56.539Z
2    2019-11-25T04:23:56.522Z
3    2019-11-25T11:11:54.509Z
4    2019-12-25T10:22:36.129Z
5    2019-12-25T09:22:29.349Z
6    2019-12-25T08:22:56.209Z

我想要这个输出:

ID   time
---------------
4    2019-12-25
5    2019-12-25
6    2019-12-25

一般来说,我也想知道如何将这种类型的字符串变量转换为日期格式,以便将来按日期时间排序。谢谢!

【问题讨论】:

  • @marc_s 它包括日期和时间?但是对于输出我只想要日期。

标签: sql date hadoop hive timestamp


【解决方案1】:

你可以像下面这样实现它:

SELECT ID, FROM_UNIXTIME(UNIX_TIMESTAMP(time, "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"),"yyyy-MM-dd") as time
FROM yourtable

【讨论】:

  • 嗨,这不起作用,所有日期+时间值都返回为 null..
  • 尝试执行小集合,如 SELECT UNIX_TIMESTAMP('2020-01-17T00:00:04.226Z', "yyyy-MM-dd'T'hh:mm:ss.SSS'Z'" ) ;有用吗?
  • 可行,但代码在数据集上不起作用。
  • 字符串变量的类型(DB)字符串和类型(JDBC)为varchar。
  • SELECT FROM_UNIXTIME(1579292138113, ,"yyyy-MM-dd") 怎么样
【解决方案2】:

只需使用 substring 函数即可

select substr(time,1,10) as date from tablename;

更新 这会将其转换回日期,您可以进行排序

select cast(substr(time,1,10) as date) as date from tablename;

【讨论】:

  • 我知道我可以使用 substr,但如何将其转换为时间?稍后我需要按时间和日期/时间范围对数据集进行排序。
  • 这也有效!我为他的努力接受了@RonakDhoot XD...
  • @StandinWolf 如果我想在转换中包含 h、m 和 second,我应该怎么做?
猜你喜欢
  • 2022-01-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-13
  • 1970-01-01
  • 2017-02-03
  • 2018-05-19
  • 2014-05-02
相关资源
最近更新 更多