SQL:将数字日期更改为"日期"

时间:2018-06-13 14:00:51

标签: sql date type-conversion numeric vertica

我的日期变量为Numeric(37),格式为(20160404,20160405,...)。关于其他问题,我尝试了以下内容,

select convert(datetime, date_var) 

错误Column datetime does not exist

select convert(date, date_var) 

与上述相同的错误。 也尝试了,

select convert(date, convert(float, date_var))

有同样的错误。

select cast(convert(VARCHAR, date_var) as datetime)

给出类似的错误列"VARCHAR" does not exist

我道歉,我的SQL知识只有几个星期了,如果我在发布这个问题之前需要做进一步的研究。我觉得我犯了一些错误,比如对错误的数据库使用错误的函数。有人可以帮帮我吗?

3 个答案:

答案 0 :(得分:1)

我只会使用cast()

select convert(date_var as datetime) 

我不确定Vertica是否支持特定转换,但这应该可行:

select convert(date_var as varchar(255)) 

cast()是用于在不同类型之间进行转换的ANSI标准函数。

在Vertica中,您也可以这样做:

select date_var::varchar(255)

这是继承自Postgres的语法。

对于你的实际问题,如果你必须转换两次,我不会感到惊讶:

select (date_var::varchar(255))::datetime

答案 1 :(得分:1)

你的意思是,我想:

WITH
input(datenum) AS (
          SELECT 20180602
UNION ALL SELECT 20180603
)   
SELECT datenum::VARCHAR(16)::DATE FROM input;

输出是:

datenum
2018-06-02
2018-06-03

答案 2 :(得分:0)

这取决于您使用什么来运行此语句。 我想一个简单的开箱即用方法就是运行一个脚本。像一个轰鸣声。

要将数值转换为字符值,请尝试以下代码

PROC SQL;

  CREATE TABLE y AS

  SELECT PUT(x.subjid, 6.) AS subjid,

         PUT(x.date, YYMMDD10. ) AS date

  FROM x;

QUIT;

或者如果你只需要做一个select语句..

SELECT CONVERT(DATETIME,CONVERT(VARCHAR(8),NumberDate),112)

或者如果您需要声明一个新数字并设置日期格式x

SELECT CONVERT(DATETIME, CONVERT(CHAR(8), @x));