Oracle SQL“;从日期时间字段中选择日期";
我有字段REPORTDATE(日期时间)。 在SQLDeveloper中,我可以用这种格式看到它的值Oracle SQL“;从日期时间字段中选择日期";,sql,oracle,date,select,Sql,Oracle,Date,Select,我有字段REPORTDATE(日期时间)。 在SQLDeveloper中,我可以用这种格式看到它的值 29.10.2013 17:08:08 我发现,为了只选择一个日期,我需要执行以下操作: SELECT TO_DATE (REPORTDATE, 'DD.MON.YYYY') AS my_date FROM TABLE1 但它返回0RA-01843:不是有效月份 我只想返回2013年10月29日的结果 截止日期(报告日期“DD.MON.YYYY”) 这毫无意义。您正在将日期再次转换为日期。您可
29.10.2013 17:08:08
我发现,为了只选择一个日期,我需要执行以下操作:
SELECT TO_DATE (REPORTDATE, 'DD.MON.YYYY') AS my_date
FROM TABLE1
但它返回0RA-01843:不是有效月份
我只想返回2013年10月29日的结果
截止日期(报告日期“DD.MON.YYYY”)
这毫无意义。您正在将日期再次转换为日期。您可以使用TO_DATE将字符串文字转换为DATE
SQL> SELECT to_char(SYSDATE, 'DD.MM.YYYY') dt from dual;
DT
----------
12.03.2015
SQL>
我只想返回2013年10月29日的结果
您可以使用TRUNC截断时间元素。如果要将此值用于日期计算,可以直接使用它
比如说,
SQL> select TRUNC(SYSDATE) dt FROM DUAL;
DT
---------
12-MAR-15
要以特定格式显示,您可以使用来显示字符和适当的格式掩码
SQL> SELECT to_char(SYSDATE, 'DD.MM.YYYY') dt from dual;
DT
----------
12.03.2015
SQL>
使用以下命令:
SELECT trunc(REPORTDATE, 'DD') AS my_date
FROM TABLE1
这不会改变返回对象的类型,只会截断“日”级别以下的所有内容
如果可以返回字符串,则只需执行以下操作:
SELECT TO_CHAR(REPORTDATE, 'DD.MM.YYYY') AS my_date
FROM TABLE1
请尝试以下代码:
cast(datetimevariable as date)
对你合适吗;从Dual中选择trunc(截止日期('10.04.2012 14:56:00','DD.MM.YYYY HH24:MI:SS'))报告日期的数据类型是什么。它是日期还是字符串?它在数据库中的日期时间。我现在添加了信息它是一列,不是一个字段。@newuserua\u ext它不正常,因为它返回29.10.2013 00:00:00这不是解决方案这不是解决方案。它返回“29.10.2013 00:00:00”谢谢这是解决方案。我可以问您其他问题吗?我正在尝试使用此日期列进行分组,但未成功。请查看“选择以字符(REPORTDATE,'DD.MM.YYYY')作为MYDATE,COUNT(*)from TABLE1 group by MYDATE”它返回无效标识请帮助我完成我现在要在该列上分组的其他事项,但返回错误“无效标识符”
GROUP BY to_char(REPORTDATE,'DD.MM.yyyyy')
此外,这可能有助于理解nls设置,请参阅“谢谢”,还有一件事(我最后一次承诺)。如果我想进行比较,例如,我想查看“09.11.2013”之后的日期“但它也会将结果返回给我,我使用的2013年10月30日表达式是:选择to_char(REPORTDATE,'DD.MM.YYYY')、COUNT(*)from TABLE where to_char(REPORTDATE,'DD.MM.YYYY')>“09.11.2013”GROUP BY to_char(REPORTDATE,'DD.MM.yyyyy')。这是针对SQL Server(可能还有其他人),而不是Oracle的。