我有一个名为StartDate
的列,其中包含以下格式的日期:03-03-2012 15:22
我需要的是将它转换为日期。它应该如下所示:DD/MM/YYYY
我尝试过但没有成功的是:
select
p1.PA_VALUE as StartDate,
p2.PA_VALUE as EndDate
from WP_Work p
LEFT JOIN PARAMETER p1 on p1.WP_ID=p.WP_ID AND p1.NAME = 'StartDate'
LEFT JOIN PARAMETER p2 on p2.WP_ID=p.WP_ID AND p2.NAME = 'Date_To'
WHERE p.TYPE = 'EventManagement2'
AND TO_DATE(p1.PA_VALUE, 'DD/MM/YYYY') >= TO_DATE('25/10/2012', 'DD/MM/YYYY')
AND TO_DATE(p2.PA_VALUE, 'DD/MM/YYYY') <= TO_DATE('26/10/2012', 'DD/MM/YYYY')
有什么办法吗?
编辑1:PA_VALUE
列为:VARCHAR2
6条答案
按热度按时间2q5ifsrm1#
您可以在DateTime上使用TRUNC来删除DateTime的Time部分。因此,您的where子句可以是:
TRUNCATE(datetime)函数返回日期,其中日期的时间部分被截断为格式模型指定的单位。
ttcibm8c2#
将字符串转换为日期时,需要将日期掩码与字符串中的格式匹配。这包括一个时间元素,需要使用截断删除该元素:
超出了问题的范围,但将日期存储为字符串是一种糟糕的做法,存储日期时间更糟糕。
1.我们需要将字符串转换为日期,以便对它们进行任何形式的日期处理(算术、间隔评估等
1.字符串不提供格式保证,所以我们冒着数据损坏的风险,我们可以通过使用
VALIDATE_CONVERSION()
(从12c开始可用,find out more)来防止这种情况,但它仍然是PITN1.使用非标准的数据类型会使我们更难对数据模型和基于它构建的代码进行推理。
kzmpq1sx3#
我们可以在Oracle数据库中使用TRUNC函数。下面是一个例子。
输出日期:2018年1月1日
koaltpgm4#
试试看
mqkwyuun5#
如果DATE数据类型的列具有如下值:-
列中的值:2005年11月10日06:31:00
然后,您可以在选择查询中使用TRUNC函数将日期时间值转换为仅日期,如- DD/MM/YYYY或DD-MON-YYYY
从表1中选择TRUNC(第1列);
结果:2005年11月10日
您将看到上述结果-假设NLS_DATE_FORMAT设置如下:-
更改会话NLS_DATE_FORMAT =“年-月-日HH 24:MI:SS”;
mpgws1up6#
还有如下的扩展用法:
Oracle官方帮助页