小编03U*_*Usr的帖子

Oracle - 使用to_date,如何将varchar转换为今天的日期

我有一个表格,我将时间存储为varchars:

Times
starttime
00:00
16:00
22:00
Run Code Online (Sandbox Code Playgroud)

从这个表我可以将列转换为这样的日期:

Select to_date(starttime,'hh24:mi') from times
Run Code Online (Sandbox Code Playgroud)

这给了我以下内容:

01/03/2013 00:00:00
01/03/2013 16:00:00
01/03/2013 22:00:00
Run Code Online (Sandbox Code Playgroud)

如何更改此查询,以便我可以将时间值作为今天的日期前缀,以便我得到以下内容:(16/03/2013是今天的日期)

16/03/2013 00:00:00
16/03/2013 16:00:00
16/03/2013 22:00:00
Run Code Online (Sandbox Code Playgroud)

谢谢

sql oracle10g

2
推荐指数
1
解决办法
6607
查看次数

在c#中调用基类构造函数

我有以下课程:

public abstract class BusinessRule
{
    public string PropertyName { get; set; }
    public string ErrorMessage { get; set; }

    public BusinessRule(string propertyName)
    {
        PropertyName = propertyName;
        ErrorMessage = propertyName + " is not valid";
    }

    public BusinessRule(string propertyName, string errorMessage)
        : this(propertyName)
    {
        ErrorMessage = errorMessage;
    }
 }
Run Code Online (Sandbox Code Playgroud)

public class ValidateId : BusinessRule
{
    public ValidateId(string propertyName) : base(propertyName)
    {
        ErrorMessage = propertyName + " is an invalid identifier";
    }

    public ValidateId(string propertyName, string errorMessage)
        : base(propertyName)
    { …
Run Code Online (Sandbox Code Playgroud)

c# constructor base-class

1
推荐指数
1
解决办法
1316
查看次数

如何在包含连续int值的列中获得第一个间隙

我在SQL Server数据库表中有一个列,有一个包含整数值的列,我希望得到最大值,除非系列中有间隙,然后我想获得第一个缺失值.

例如,从下表,我希望获得价值4

1
2
null
3
Run Code Online (Sandbox Code Playgroud)

以上很简单,但是如果表中包含如下数据,我怎样才能找到我遗漏的id,在这种情况下它将是8

1
3
2
4
null
5
7
6
null
10
9
Run Code Online (Sandbox Code Playgroud)

//////////////////

编辑:

我最初实现了@ podiluska的答案,并且接受了它然而当我用超过10K行的表进行测试时它非常慢,所以我已经采取@vmvadivel的答案并稍微改变它,如下所示,它的工作速度非常快,但仍然不是100%我想要的:

SELECT Number
FROM 
(
    SELECT ROW_NUMBER() OVER(ORDER BY iValue) AS Number
    FROM tblNumbers WHERE iValue IS NOT NULL
) temp
WHERE Number NOT IN 
(
    SELECT iValue FROM tblNumbers WHERE iValue IS NOT NULL
)
Run Code Online (Sandbox Code Playgroud)

这很好用但是如果所有的iValue字段都是null然后我什么都没有回来,但我希望它返回1,因为它将是系列中的第一个值,显然我可以在C#代码中处理这个但我确定如果上面的查询没有返回一行,必须有一种方法返回1?

我已经改变了顶层Select NumberSELECT Coalesce(Number, 1),但它没有工作,任何想法如何解决这个问题?

谢谢

sql sql-server sql-server-2008-r2

0
推荐指数
1
解决办法
1739
查看次数

Oracle获取日期名称返回错误的名称

我使用它来获取给定日期的名称,所以以下给我星期一:

Select to_char(to_date('01/04/2013','dd/mm/yyyy'), 'DAY') from dual
Run Code Online (Sandbox Code Playgroud)

但是,如果我将相同的东西应用到一个表并用他们的名字提取日期我得到一个错误的日期名称,在'01/April/2013'的情况下,它给了我星期六.

    Select to_char(to_date(myDateColumn,'dd/mm/yyyy'), 'DAY'), myDateColumn 
From myTable WHERE myDateColumn = to_date('01/04/2013','dd/mm/yyyy')
Run Code Online (Sandbox Code Playgroud)

这就是我在MS SQL上的表现,但我需要为Oracle 10g数据库做这个,这是正确的方法吗?

谢谢

sql oracle oracle10g

0
推荐指数
1
解决办法
5368
查看次数

获取最后插入的行的ID,并使用它插入存储过程中的另一个表

我有以下存储过程用于将数据插入表中:

CREATE OR REPLACE PROCEDURE mySproc
(
 invoiceId IN NUMBER
 customerId IN NUMBER
)
IS
BEGIN 
    INSERT INTO myTable (INVOICE_ID) 
    VALUES (invoiceId);
END mySproc;
/
Run Code Online (Sandbox Code Playgroud)

我想要做的是获取最后插入的ID(这是myTable上的主键字段并使用序列自动递增)并将其插入另一个表中,我尝试了以下但无法使其工作:

CREATE OR REPLACE PROCEDURE mySproc
(
 invoiceId IN NUMBER
 customerId IN NUMBER
)
IS
BEGIN 
    INSERT INTO myTable (INVOICE_ID) 
    VALUES (invoiceId)

    returning id into v_id;

    INSERT INTO anotherTable (ID, customerID) 
    VALUES (v_id, customerId);  
END mySproc;
/
Run Code Online (Sandbox Code Playgroud)

我收到此错误:[错误] PLS-00049(59:26):PLS-00049:错误的绑定变量'V_ID'我想我需要在某处声明v_id但我在BEGIN语句之前和之后尝试但是这又给出了另一个错误.

关于如何做到这一点的任何想法?

谢谢

sql plsql oracle10g

0
推荐指数
1
解决办法
1950
查看次数