SQL:是不是可以将 dd-mon-yy 转换为一天中的某个时间?

Posted

技术标签:

【中文标题】SQL:是不是可以将 dd-mon-yy 转换为一天中的某个时间?【英文标题】:SQL: Is it possible to convert dd-mon-yy to a time of day?SQL:是否可以将 dd-mon-yy 转换为一天中的某个时间? 【发布时间】:2020-11-02 10:17:07 【问题描述】:

我有这张表叫做约会,日期为 dd-mon-yy:

APP_DATE  
--------- 
06-NOV-20 
06-NOV-20 

我的老师要我们把它改成这样:

APPT_DATE      APPT_TIME 
-------------  ------------
NOV 06, 2020   10:45 AM 
NOV 06, 2020   11:30 AM 

这甚至可能吗?如果是这样,怎么做?我的老师在约会时没有给我们每小时的信息。但也许它仍然存在,因为它们是日期类型?

【问题讨论】:

app_date是什么数据类型? 它是 DATE 数据类型。 【参考方案1】:

如果你真的只有一个日期,就没有办法获得约会时间。

如果这是一个视图或某种表示层,并且底层数据源中实际上存在 DATETIME 格式,您可以使用如下内容: CONVERT(TIME(0), APP_DATE) AS APP_TIME

如果不是这样,您的老师似乎遗漏了一些关键信息,并且/或者更有兴趣将日期格式从 DD-MMM-YY 更改为 [MMM DD, YYYY] 这可以这样做: SELECT CONVERT(VARCHAR, APP_DATE, 107)

有关 CONVERT 函数和格式选项的更多信息,请参阅此链接: https://www.w3schools.com/sql/func_sqlserver_convert.asp

【讨论】:

该语法对 Oracle 无效(没有 convert 函数或 time 数据类型)。另外:Oracle 的DATE 确实包含时间部分。 @a_horse_with_no_name - 好吧,当我回答时那个标签不存在 @JShark:是的,但sqlplus 仅适用于 Oracle.. @NotARobot - 在我的答案中添加了 SQL Server 的语法,但我没有意识到您使用的是 Oracle。 是的,对不起,我应该更清楚地说明这一点。但是,由于它在我的表中是 DATE 数据类型,因此您可以根据小时和分钟获得准确的时间。【参考方案2】:

如果该列是date,那么它包含一个时间,它只是displaying的问题:

select to_char(app_date, 'Mon, d yyyy') as app_date, 
       to_char(app_date, 'hh24:mi') as app_time
from the_table;

【讨论】:

***不过有一个小错字。第二行应该是 'hh24:mi'。【参考方案3】:

我认为勾选正确的答案存在一些问题。

您可以使用以下代码:

SELECT TO_CHAR(APP_DATE, 'Mon, DD yyyy') AS APP_DATE, -- use DD instead of D
       TO_CHAR(APP_DATE,'hh24:mi') AS APP_TIME -- Use 24 instead of 42
  FROM YOUR_TABLE

【讨论】:

是的,你的权利。您的代码中没有错误。接受另一个人的答案,我觉得仍然足够接近。

以上是关于SQL:是不是可以将 dd-mon-yy 转换为一天中的某个时间?的主要内容,如果未能解决你的问题,请参考以下文章

在 Databricks SQL 中将字符串转换为日期返回 null

SQL 开发人员中的日期转换返回错误

Oracle复习SQL高级查询

如何将Canvas 上的内容转换为一张Bitmap

用JAVA编程将任意一个整数转换成中文大写,如101转换为一百零一

将多行数据列转置为一列