暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle 如何在查询中声明/定义日期字段

ASKTOM 2018-12-18
426

问题描述

当我使用MSSQL时,我可以声明开始和结束日期 (或其他参数),以避免必须更改查询本身中的变量。

这就是表的样子
-------------------- ------ ------
日期时间操作用户
-------------------- ------ ------
16/12/2018 20:32:58选择约翰
16/12/2018 23:58:42下降约翰
17/12/2018 2:13:54选择乔治
17/12/2018 10:24:36选择保罗
17/12/2018 16:44:25下降保罗
18/12/2018 1:23:45下降乔治

查询将是这样的:

DECLARE @StartTime char(10); set @startTime = '2018-12-17' 
DECLARE @StopTime char(10); set @stopTime = '2018-12-18'   
 
SELECT DateTime, Action, User

FROM transport 
 
WHERE Time BETWEEN @StartTime AND @StopTime


我已经尝试了几个TO_DATE & DEFINE选项,但是我一直收到错误

专家解答

当你对字符串进行日期设置时,提供一个格式掩码。确保这与您的字符串的格式匹配:

var st_dt varchar2(12);
var en_dt varchar2(12);

exec :st_dt := '10-DEC-2018';
exec :en_dt := '13-DEC-2018';

with rws as (
  select date'2018-11-30' + level dt 
  from   dual
  connect by level <= 31
)
  select * from rws
  where  dt between to_date ( :st_dt, 'DD-MON-YYYY' ) 
            and to_date ( :en_dt, 'DD-MON-YYYY' );

DT                     
10-DEC-2018 00:00:00   
11-DEC-2018 00:00:00   
12-DEC-2018 00:00:00   
13-DEC-2018 00:00:00 


如果这不起作用,你需要更具体地说明问题是什么。I.e.你的代码和你得到的错误

PS-当您在Oracle数据库中遇到错误时,它有助于向我们显示您的Oracle代码。不是MSSQL!
文章转载自ASKTOM,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论