从SQL读入视觉工作室DateTime

时间:2014-12-04 13:49:22

标签: c# sql sql-server datetime visual-studio-2012

我遇到了问题,我正在尝试从Sql数据库中读取,它名为Testing并包含一个名为TimeDate的表,在其中,它具有名为DoB(出生日期)的属性,其值为Date(不是DateTime)。在视觉工作室里面,我从数据库中读取并将Date返回到一个名为DoB的变量列表中,数据类型为DateTime(据我所知,没有“Date”数据类型)。但当我显示所有我想看的信息是月,日和年(1990年3月27日),但我实际看到的是这个3/27/1990 12:00:00 AM ...我不希望那个时间部分被显示,即使我使用.Date属性,它仍然显示时间部分,无论如何摆脱这个?

这是我用来读/写数据库并在控制台中显示信息的代码

static void Main(string[] args)
    {
        Console.WriteLine("What is the birthday you would like to input?(YYYY-MM-DD)");
        DateTime newDate = Convert.ToDateTime(Console.ReadLine());
        NewDate(newDate);

        List<DateTime> dates = Read("FindDates", new SqlParameter[] { });
        Console.WriteLine("\n");
        foreach (DateTime date in dates)
        {
            Console.WriteLine(date);
        }
        Console.ReadKey();
    }
    private static string connectionString = @"Server = ONSHORE-PC\SQLEXPRESS;Database = Testing;Trusted_Connection = True;";

    public static void NewDate(DateTime date)
    {
        try
        {
            SqlParameter[] parameters = new SqlParameter[] {
            new SqlParameter("@TimeDate", date.Date)
        };
            Write("InputDate", parameters);
        }
        catch (Exception e)
        {
            Console.WriteLine("Error Writing to Database");   
        }
    }
    public static int Write(string statement, SqlParameter[] parameters)
    {
        using (SqlConnection con = new SqlConnection(connectionString))
        {
            using (SqlCommand command = new SqlCommand(statement, con))
            {
                command.Parameters.AddRange(parameters);
                command.CommandType = System.Data.CommandType.StoredProcedure;
                con.Open();
                return Convert.ToInt32(command.ExecuteScalar());
            }
        }
    }
    private static List<DateTime> Read(string statement, SqlParameter[] parameters)
    {
        using (SqlConnection con = new SqlConnection(connectionString))
        {
            using (SqlCommand command = new SqlCommand(statement, con))
            {
                command.Parameters.AddRange(parameters);
                command.CommandType = System.Data.CommandType.StoredProcedure;
                con.Open();
                SqlDataReader data = command.ExecuteReader();
                List<DateTime> Dates = new List<DateTime>();
                while (data.Read())
                {
                    DateTime date = new DateTime();
                    date = Convert.ToDateTime(data["DoB"]);
                    Dates.Add(date);
                }
                return Dates;
            }
        }
    }

2 个答案:

答案 0 :(得分:0)

由于您已经有DateTime,因此您只需要格式化它的字符串表示形式,如;

yourDateTime.ToString("M'/'dd'/'yyyy")

yourDateTime.ToString("M/dd/yyyy", CultureInfo.InvariantCulture)

我强烈怀疑您只使用DateTime作为yourDateTime,并且可能在代表部分中,默认情况下会调用DateTime.ToString() method这使用"G" standard date and time format

此说明符返回ShortDatePattern和。LongTimePattern组合,并分隔CurrentCulture的空格。

答案 1 :(得分:0)

如果您只是想通过dd / MM / yyyy显示

    var dateString = date.ToString("dd/MM/yyyy");