SQL:将数字日期更改为 "Date"
SQL: Changing numeric date to "Date"
我的日期变量是 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)
给出类似的错误 Column "VARCHAR" does not exist
抱歉,我对 SQL 的了解只有几个星期,如果我需要在发布此问题之前做进一步的研究。我觉得我犯了一些错误,比如对错误的数据库使用了错误的函数。谁能帮帮我?
这取决于您对 运行 此语句使用的是什么。
我想一个简单的开箱即用方法是 运行 一个脚本。就像下面的那个。
要将数值转换为字符值,请尝试以下代码
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));
我会用 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
我想你是这个意思:
WITH
input(datenum) AS (
SELECT 20180602
UNION ALL SELECT 20180603
)
SELECT datenum::VARCHAR(16)::DATE FROM input;
输出为:
datenum
2018-06-02
2018-06-03
我的日期变量是 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)
给出类似的错误 Column "VARCHAR" does not exist
抱歉,我对 SQL 的了解只有几个星期,如果我需要在发布此问题之前做进一步的研究。我觉得我犯了一些错误,比如对错误的数据库使用了错误的函数。谁能帮帮我?
这取决于您对 运行 此语句使用的是什么。 我想一个简单的开箱即用方法是 运行 一个脚本。就像下面的那个。
要将数值转换为字符值,请尝试以下代码
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));
我会用 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
我想你是这个意思:
WITH
input(datenum) AS (
SELECT 20180602
UNION ALL SELECT 20180603
)
SELECT datenum::VARCHAR(16)::DATE FROM input;
输出为:
datenum
2018-06-02
2018-06-03