我的日期变量为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知识只有几个星期了,如果我在发布这个问题之前需要做进一步的研究。我觉得我犯了一些错误,比如对错误的数据库使用错误的函数。有人可以帮帮我吗?
答案 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));