是否有一种优雅的方式来转换出生日期"列格式为" 28-Mar-99"到" 1999-03-28"在蜂巢中?
我使用下面的查询来处理这些问题,它适用于2000之后的日期,但对于2000之前的日期,它给出NULL或20XX。
select a.d_cancel,
from_unixtime(unix_timestamp(a.d_cancel ,'dd-MMM-yy'), 'yyyy-MM-dd') as new_date
from test_table a;
d_cancel new_date
0 12-Apr-07 2007-04-12
1 31-Dec-99 NULL
2 20-Sep-98 2098-09-20
答案 0 :(得分:0)
您可以使用此查询:
-- D/M/Y format (everywhere else)
SELECT CAST(DAY(@date) AS varchar(2)) + '/'
+ CAST(MONTH(@date) AS varchar(2)) + '/'
+ CAST(YEAR(@date) AS varchar(4))
答案 1 :(得分:0)
DECLARE @Day VARCHAR(10)='28-Mar-99'
SELECT CONVERT (DATE,@Day,126) AS ConvertedDate
DECLARE @Day VARCHAR(10)='28-Mar-99'
SELECT CAST (@Day AS DATE) AS ConvertedDate
答案 2 :(得分:0)
我有类似的问题。我用这个来解决它:
select
if( to_date(from_unixtime(unix_timestamp( old_date_of_birth, "ddMMMyy"))) < from_unixtime(unix_timestamp()),
to_date(from_unixtime(unix_timestamp( old_date_of_birth, "ddMMMyy"))),
concat(year(to_date(from_unixtime(unix_timestamp( old_date_of_birth, "ddMMMyy"))))-100, SUBSTRING(to_date(from_unixtime(unix_timestamp( old_date_of_birth, "ddMMMyy"))),5,10))
) as new_date_of_birth
from users
在我的情况下,日期的格式为ddMMMyy(24MAR93),我没有提到你的null问题。但我确实有未来出生日期的问题。
由于这是一个迟到的答案,我认为你已经解决了问题,但它可能会帮助其他用户。