SQL> select to_timestamp('2010-12-14:09:56:53') - to_timestamp('2010-12-14:09:56:46') from dua
l;
select to_timestamp('2010-12-14:09:56:53') - to_timestamp('2010-12-14:09:56:46') from dual
*
ERROR at line 1:
ORA-01843: not a valid month
SQL> select to_date('2010-12-14:09:56:53') - to_date('2010-12-14:09:56:46') from dual;
select to_date('2010-12-14:09:56:53') - to_date('2010-12-14:09:56:46') from dual
*
ERROR at line 1:
ORA-01861: literal does not match format string
Run Code Online (Sandbox Code Playgroud)
做正确的方法是什么?
2010-12-14:09:56:53
minus
2010-12-14:09:56:46
Run Code Online (Sandbox Code Playgroud)
在Oracle SQL中?
Oracle(10g)在这里进行了适当的TIME比较,还是需要转换为十进制时间然后进行比较?例如,
IF (SELECT TO_CHAR(sysdate,'HH24:MI:SS') from dual) <= '15:00'
THEN (...)
Run Code Online (Sandbox Code Playgroud)
谢谢.
我有一个后台工作人员报告计算的进度.它返回它在ProgressChangedEventArgs中处理的当前行号.我可以从那里确定做的百分比
(int) (100 * (double)e.ProgressPercentage / csTextLines)
Run Code Online (Sandbox Code Playgroud)
其中csTextLines是我正在处理的行数.我遇到的麻烦是我想要得到总估计时间和剩余时间.我看到后台工作程序中没有任何内容可以帮助我,所以我想它必须使用DateTime计算完成.这是我到目前为止尝试获得TotalEstTime和TimeLeft的方法
哪里
哪里
所以,如果我们把它变成代码,我到目前为止
// This event handler updates the progress.
private void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
TimeSpan difInCalls = DateTime.Now.Subtract(m_LastProgressCall);
m_LastProgressCall = DateTime.Now;
m_totalDif = m_totalDif.Add(difInCalls);
TimeSpan avgDif = new TimeSpan(0, 0, 0, 0, ((int)m_totalDif.TotalMilliseconds / m_csNumLines));
double totalTime = m_csNumLines * avgDif.TotalSeconds;
double …Run Code Online (Sandbox Code Playgroud) 我需要根据Oracle上的数据库对查询进行限定,以获得基于特定日期范围的报告
第一个查询
下午5点至7点(昨天下午5点至今天上午7点)
第二个查询
上午7点至下午5点(昨天下午5点,今天上午7点)
我该怎么办?我需要知道Oracle语法来指定那些日期标准
提前致谢
我有一个事务表,我的问题是跟踪transactionDateTime列.使用SQL,我似乎无法获取DATE或TIMESTAMP格式化,以便任何插入的数据必须在任何给定的一天上午8点到晚上10点之间:
CREATE TABLE Transaction_T
(transactionID NUMBER(8,0) ,
employeeID NUMBER(10,0) NOT NULL,
customerID NUMBER(6,0) NOT NULL,
transactionDate VARCHAR2(9) NOT NULL,
transactionPayment VARCHAR2(10) check(transactionPayment IN('cash','credit','debit','ebt')),
transactionType VARCHAR2(10) check(transactionType IN('void','return','sale')),
transactionDateTime TIMESTAMP check(transactionDateTime < '% 22:00:00' AND transactionDateTime > '% 08:00:00') NOT NULL,
CONSTRAINT TransactionPK PRIMARY KEY (transactionID),
CONSTRAINT TransactionFK1 FOREIGN KEY (employeeID) REFERENCES Employee_T(employeeID),
CONSTRAINT TranscationFK2 FOREIGN KEY (customerID) REFERENCES Customer_T(customerID));
Run Code Online (Sandbox Code Playgroud)
上面的表是创建的,但是在尝试插入正确的时候Date(Time),我会收到1到12小时之间的格式错误,或者当时间低于12时没有有效月份.我使用了Oracle文档格式但仍然没有运气:
INSERT INTO
transaction_T(transactionID, employeeID, customerID, transactionDate, transactionPayment, transactionType, transactionDateTime)
VALUES(00000001, 0001, 000004, …Run Code Online (Sandbox Code Playgroud) 我在python中以干净简单的方式执行此操作时遇到了麻烦.
我想做的是拥有一段代码来计算两个日期之间的天数.例如,今天是12月22日,我想知道在15日之前我有多少天.有55天的差异
(我采用这个例子,因为它使两个不同的年份连续多个月)
我所做的非常混乱,并且没有工作一半的时间所以我有点尴尬地展示它.
任何帮助表示赞赏.
提前致谢
SELECT COALESCE (
(to_timestamp( '2014-09-22 16:00:00','yyyy/mm/dd HH24:MI:SS')
- ('2014-09-22 09:00:00' ,'yyyy/mm/dd HH24:MI:SS'))
- (to_timestamp( '2014-09-22 16:00:00','yyyy/mm/dd HH24:MI:SS')
- to_timestamp('2014-09-22 09:00:00.' ,'yyyy/mm/dd HH24:MI:SS'))
, '00:00')
FROM DUAL;
Run Code Online (Sandbox Code Playgroud)
这是在postgres中工作,但它在oracle中不起作用.
使用lubridate,如何计算给定日期的上一季度的最后一天?以下公式似乎不适用于2014年11月3日(其他日期有效)
library(lubridate)
date = as.POSIXct("2014-11-03")
date - days(day(date)) - months(month(date) %% 3 - 1)
# NA
Run Code Online (Sandbox Code Playgroud)
足够有趣的是,更改订单可以:
date - months(month(date) %% 3 - 1) - days(day(date))
# "2014-09-30 UTC"
Run Code Online (Sandbox Code Playgroud) 我将时间戳字段格式化为'DD/MM/YYYY'格式以获取该日期的所有处理记录.
select count(*) from task_log where to_date (event_dt,'DD/MM/YYYY')= to_date('19/05/2015','DD/MM/YYYY');
Run Code Online (Sandbox Code Playgroud)
上面的查询返回0计数.
select count(*) from task_log where to_date (event_dt,'DD/MM/YYYY')= to_date('19/05/0015','DD/MM/YYYY');
Run Code Online (Sandbox Code Playgroud)
上面的查询返回29个计数.
如果我跑:
select event_dt from task_log where to_date (event_dt,'DD/MM/YYYY')= to_date('19/05/0015','DD/MM/YYYY');
EVENT_DT
5/19/2015 9:35:23 AM
5/19/2015 9:35:23 AM
5/19/2015 9:37:22 AM
5/19/2015 9:37:23 AM
5/19/2015 9:37:32 AM
5/19/2015 9:37:53 AM
Run Code Online (Sandbox Code Playgroud)
等等...
select to_date (event_dt,'DD/MM/YYYY') as to_date_Farmatted from task_log
TO_DATE_FARMATTED
5/19/0015
5/19/0015
5/19/0015
5/19/0015
5/19/0015
Run Code Online (Sandbox Code Playgroud)
to_date格式是格式化为0015年?
如何避免将年份格式化为0015格式?我需要2015年的格式.请帮我解决这个问题.
我SLA_Date在Orders表中有一个日期列。
我SLA_Date应该排除周末(星期六和星期日)。工作日的数据应单独显示。
如何在SQL中做到这一点?