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