试图在Teradata中投射日期和时间

时间:2014-05-07 13:37:49

标签: sql datetime teradata

我从具有时间戳(6)数据类型的表中进行选择。

我希望得到日​​期和时间,如此:

目前数据如下所示:03/10/2014 21:54:47.690000

我想选择以便结果如下所示:03/10/2014 21:54:47

我试过了:

SELECT CAST(EVENT_GMT_TIMESTAMP AS DATE) || (EVENT_GMT_TIMESTAMP AS TIME)   AS theDate, SUM(VwNIMEventFct.DWELL_MINUTES) AS totalDwellMins
FROM RDMAVWSANDBOX.VwNIMEventFct
WHERE EXTRACT(MONTH FROM EVENT_GMT_TIMESTAMP) = 4
GROUP BY theDate

但是收到了一条消息"语法错误,期待EVENT_GMT_TIMESTAMP和AS关键字之间的某些内容"

还尝试了concat()。

有没有更好的方法,而不是连接,选择EVENT_GMT_TIMESTAMP作为日期时间,但是到了分钟?

还到了小时?

必须有一个功能可以让你选择这样的输出吗?

我发现研究网络的内容似乎无法在Teradata上运行。

我也试过这个:

SELECT CAST(EVENT_GMT_TIMESTAMP AS FORMAT 'YYYYMMDDHHMM')  

但输出是这样的:

04/18/2014 12:20:44.384000

我需要它像这样:

04/18/2014 12:20:44

2 个答案:

答案 0 :(得分:5)

我从来没有能够像我想要的那样让时间戳格式化工作,但这会得到你想要的格式:

SELECT  current_timestamp(6) AS ts,
  ( ts (FORMAT 'MM/DD/YYYY') (CHAR(10)))as DT, 
  cast (ts as time(6)) (char(8)) as tm,
   dt ||' ' ||tm as FormattedDate

或者,有新的和改进的版本,dnoeth的赞美:

SELECT  current_timestamp(6) AS ts,
ts (FORMAT 'MM/DD/YYYYbhh:mi:ss') (CHAR(19))

答案 1 :(得分:0)

public void storeData(Context context,List<Contact> offlineData){

        SharedPreferences preferences=context.getSharedPreferences("contact_prefs",Context.MODE_PRIVATE);
        SharedPreferences.Editor editor = preferences.edit();

        Gson gson=new Gson();
        editor.putString("data",gson.toJson(offlineData));
        editor.apply();
    }

是一种更好的方法