首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >无法将时间戳转换为日期

无法将时间戳转换为日期
EN

Stack Overflow用户
提问于 2014-12-16 08:58:43
回答 2查看 1.8K关注 0票数 0

我正在试图转换保存在表中的时间戳,但由于某种原因,它返回了相同的日期,或者它给了我一个奇怪的错误:

ORA-01830: date format picture ends before converting entire input string

下面是我尝试过但没有成功的方法:Change_Date字段的类型是TIMESTAMP(6)

SELECT TO_DATE (Change_Date, 'YYYY-MON-DD') FROM test,它给了我上面的错误。

SELECT CAST(SYSTIMESTAMP AS DATE) FROM test格式不变。

SELECT TO_DATE(To_Char(Change_Date)) FROM test没有变化。

SELECT To_Char(to_date(Change_Date, 'DD-MON-YY')) FROM test没有运气。

还有其他一些我不记得的技巧,但是它总是返回相同的格式-- 16-DEC-14 07.59.24.097000 AM

我只需要输出日期,例如16-DEC-14

我知道我错过了一个很小的部分,但我找不到。你能推我一下吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-12-16 09:23:50

若要截断日期或时间戳值的时间部分,应使用TRUNC函数。默认情况下,它截断时间部分,返回一个午夜时间的日期。

根据您的数据库版本,您可以直接截断时间戳,或者必须先将时间戳转换为日期,例如

代码语言:javascript
运行
复制
TRUNC(Change_Date)

代码语言:javascript
运行
复制
TRUNC(CAST(Change_Date as Date))

正如我在评论中提到的,日期没有格式。日期类型的值,就像数字一样,存储在不受地区或格式影响的特定二进制格式中。只有在尝试将日期转换为字符串或将字符串解析为日期时,格式才会起作用。

混淆是因为日期(和数字)有时是隐式转换为字符串,例如为了显示目的,当比较不同类型的值时。在这种情况下,数据库将在进行比较之前使用默认区域设置将一种类型转换为另一种类型。

这种隐式转换导致人们认为日期和数字在没有特定格式的情况下具有特定的格式。

票数 3
EN

Stack Overflow用户

发布于 2014-12-16 09:20:24

SELECT To_Char(Change_Date, 'DD-MON-YY') FROM test

编辑做测试

代码语言:javascript
运行
复制
SELECT SYSDATE, CURRENT_TIMESTAMP  FROM DUAL;

SYSDATE              CURRENT_TIMESTAMP                   
-------------------- -------------------------------------
16-DEC-2014 10:30:59 16-DEC-2014 10.30.59.608090000 EUROPE/AMSTERDAM                            




SELECT to_char(SYSDATE,'DD-MM-YYYY'), to_char(CURRENT_TIMESTAMP,'DD-MM-YYYY')  FROM DUAL;

TO_CHAR(SYSDATE,'DD-MM-YYYY') TO_CHAR(CURRENT_TIMESTAMP,'DD-MM-YYYY')
----------------------------- ---------------------------------------
16-12-2014                    16-12-2014    

我只需要输出日期,例如16-DEC-14。

16-DEC-14不是日期,而是日期的字符串表示形式

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27500826

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档