Presto SQL -将日期字符串转换为日期格式



我有一个格式为varchar的日期,看起来像-

7/14/2015 8:22:39 AM

我已经看过presto文档并尝试了各种各样的东西(cast, date_format,使用split_part来解析然后cast),并且没有将此转换为我可以与date_diff等函数一起使用的日期格式。

我试过:

cast(fieldname as timestamp)
date_format(fieldname, '%Y-%m-%d %T)

都给出如下错误

'Value cannot be cast to timestamp: 3/31/2016 6:05:04 PM'

我如何转换这个?

我明白了。下面的工作将其转换为24小时日期格式。

select date_parse('7/22/2016 6:05:04 PM','%m/%d/%Y %h:%i:%s %p')

参见Presto的date_parse文档

你也可以这样做

日期(cast(2016-03-22 15:19:34.0的时间戳))

使用:cast(date_parse(inv.date_created,'%Y-%m-%d %h24:%i:%s') as date)

输入:String timestamp

输出:date format 'yyyy-mm-dd'

将具有Int格式日期的DateID转换为日期格式:Presto Query

Select CAST(date_format(date_parse(cast(dateid as varchar(10)), '%Y%m%d'), '%Y/%m-%d') AS DATE)
from
     Table_Name
limit 10;
    select date_format(date_parse(t.payDate,'%Y-%m-%d %H:%i:%S'),'%Y-%m-%d') as payDate 
    from testTable  t 
    where t.paydate is not null and t.paydate <> '';

如果字符串是ISO 8601格式,还可以使用from_iso8601_timestamp

date_format要求第一个参数为timestamp,因此不是转换字符串的最佳方式。用date_parse代替。

同样,使用%c表示不加零的月份,%e表示不加零的月份,%Y表示四位数字的年份。

SELECT date_parse('7/22/2016 6:05:04 PM', '%c/%e/%Y %r')

SQL 2003标准定义的格式如下:

<unquoted timestamp string> ::= <unquoted date string> <space> <unquoted time string>
<date value> ::= <years value> <minus sign> <months value> <minus sign> <days value>
<time value> ::= <hours value> <colon> <minutes value> <colon> <seconds value>

有一些定义之间,只是链接到这些,但简而言之,YYYY-MM-DD HH:MM:SS与可选的.mmm毫秒需要在所有SQL数据库上工作

如果您需要从时间戳转换为日期,您也可以使用date()函数,就像mySQL一样:

select date(your_date_colunm_name) as new_date_colunm

相关内容

  • 没有找到相关文章

最新更新