【问题标题】:I ask for the datetime value with dataReader and get the min value我用 dataReader 询问日期时间值并获取最小值
【发布时间】:2012-08-17 13:47:24
【问题描述】:

我需要你的帮助来解决这个问题。

我有一个 DataReader,当使用函数 GetDateTime 来读取日期列时,我得到了最小值。我没有看到 GetDate 函数。我尝试将列的数据类型更改为日期时间,以便两者具有相同的数据类型,但结果相同。

这是表的定义:

CREATE TABLE [dbo].[Solped](
    [docNumber] [int] NOT NULL,
    [docType] [nvarchar](255) NOT NULL,
    [createDate] [date] NULL,
    [hora] [time](2) NULL,
    ....

这是我读取数据库的地方:

string sql = "SELECT * FROM Solped order by docNumber DESC";
            System.Console.WriteLine(sql);
            SqlCommand cmd = new SqlCommand(sql, con);
            SqlDataReader reader = cmd.ExecuteReader();

            while (reader.Read())
            {
                solped = new Solped();

                solped.docNumber = reader.GetInt32(0);
                solped.docType = reader.GetString(1);

                DateTime dt = reader.GetDateTime(2);
                solped.fecha = dt;

这是调试时显示的值:

dt = {1/1/0001 12:00:00 AM}

这是程序中的呈现值:

Date(1345089600000)

我完全不知道我应该采取什么功能或行动来解决问题。如果您能提供帮助,我将不胜感激。谢谢!

【问题讨论】:

    标签: sql-server date datetime sqldatareader


    【解决方案1】:

    看起来您在表格的两个不同列中都有日期和时间,试试这个

    SELECT DocNumber, DocType, 
    CAST(CAST(createDate as varchar(10)) + ' ' + CAST(hora as varchar(12)) as datetime) as fullDate
    FROM Solped
    

    【讨论】:

    • 是的,它们位于两个不同的列中。如果这样更好,我会将它们放在一起。但是当我使用 DataReader 的 getDateTime 函数时,日期为空。
    • 那么您应该检查您的表中是否有任何记录的该列具有 NULL 值。
    • 没有。没有。都满了。
    • 那我不明白为什么这不起作用,但也许你可以尝试dt = DateTime.TryParse(reader.getString(2)) 之类的东西(将其作为字符串获取并在之后进行解析),祝你好运
    猜你喜欢
    • 1970-01-01
    • 2021-12-15
    • 2019-05-31
    • 2021-12-23
    • 1970-01-01
    • 1970-01-01
    • 2021-05-30
    • 2016-05-12
    • 2016-07-09
    相关资源
    最近更新 更多