当前位置: 首页 > 知识库问答 >
问题:

Oracle sql日期时间戳筛选器[重复]

漆雕兴平
2023-03-14

我的Oracle表有1,000个观察值,以下2个变量:(两个字段都是varchar)

ID   datecreate
ABC  24/12/2016 05:32:07
select *
from table
where datecreate >= to_date('01/02/2018 00:00:00', 'dd/mm/yyyy hh24:mi:ss') and
datecreate <= to_date('28/02/2018 23:59:00', 'dd/mm/yyyy hh24:mi:ss')
ORA-01843: not a valid month
01843. 00000 -  "not a valid month"
*Cause:    
*Action:

我是不是漏掉了一些明显的东西?

谢谢

共有1个答案

乔伯寅
2023-03-14

已经多次强调,在数据库中,datetime不应存储为字符串。然而,每天都有几个问题被提出来,完全是由于这种糟糕的做法。

请注意,在Oracle中,datetimes可以存储date类型或timestamp(带有或不带有timezone)。date类型也包含时间组件。

to_date函数在必须处理日期字符串进行转换的情况下提供了帮助。在使用日期时,最好使用大多数DBMSE都理解的'yyyy-mm-dd'格式的标准date文本。(例如:-日期'2018-02-28')。

SELECT *
FROM   yourtable
WHERE  TO_DATE(datecreate, 'dd/mm/yyyy hh24:mi:ss') >= DATE '2018-02-01'
   AND TO_DATE(datecreate, 'dd/mm/yyyy hh24:mi:ss')  < DATE '2018-02-28' + 1 

或者 如果您知道这是闰年。

如果您真的想考虑到23:59分钟,那么timestamp文本可以与to_timestamp函数一起使用。

.. AND  TO_TIMESTAMP(datecreate, 'dd/mm/yyyy hh24:mi:ss') <
        TIMESTAMP '2018-02-28 23:59:00'

 类似资料:
  • 我需要过滤-21-11-20-28-12-20和预期的输出

  • 问题内容: 这个问题已经在这里有了答案 : 我应该在MySQL中使用datetime或timestamp数据类型吗? (39个答案) 6年前关闭。 我已经搜索了此文件,但没有明确的答案(尤其是后者)。在什么情况下应该使用日期时间或时间戳记? 问题答案: 假设您使用的是MS SQL Server(不是,请参见 下面 的 更新 ): 一个表只能有一个时间戳列。每次插入或更新包含时间戳列的行时,都会更新

  • 日期时间选择器是一个定制的picker,因此他的用法和picker完全一致。打开picker的默认值是当前时间,可以通过value参数指定 datetime-picker 定制了 onChange 和 cols 参数,请不要设置这两个参数。 <input type="text" id='datetime-picker'/> <script>   $("#datetime-picker").da

  • 问题内容: 我有以下数据: 我正在尝试编写一个查询,该查询选择与某个日期匹配的所有记录,但是我正在为该字段使用时间戳记,无论我如何尝试,我的查询都不会产生任何结果。 SQL :我尝试了以下查询,但没有任何结果 1。 2。 3。 仅当我将整个日期值设置为时,它才起作用; 问题答案: 尼古拉斯·克拉斯诺夫(Nicholas Krasnov)提供的答案

  • 问题内容: 有时,我会对Java中不同的Date类型及其实际用法感到困惑。在这里我想总结一下我的理解 毫秒值左右的精简包装,可让JDBC将其标识为SQL DATE值 围绕java.util.Date的瘦包装器,该包装器允许JDBC API将其标识为SQL TIMESTAMP值。通过允许小数秒的精度达到纳秒级,它增加了保存SQL TIMESTAMP小数秒值的能力。 我已经看到大多数项目都更喜欢时间戳

  • 我正在为我的聊天应用程序使用firebase。在聊天对象中,我使用方法添加时间戳。 请就这个问题提出解决办法