none
关于在DATASET中长短日期格式的问题。 RRS feed

  • 问题

  • 数据库中的日期格式为2014-08-08,但通过查询出来放入DATASET中以后,就自己在后面加了时间。如何在查询的时候原封不动的将数据库里的时间格式存在DATASET中,而后面不加时间呢?

    DataTable dt = SqlHelper.ExecuteDataTable(@"SELECT PersonnelId
                                                                                      ,PersonnelName
                                                                                      ,PersonnelNO
                                                                                      ,PersonnelGender
                                                                                      ,PersonnelDepartment
                                                                                      ,PersonnelNation
                                                                                      ,PersonnelCarType
                                                                                      ,PersonnelIDCard
                                                                                      ,PersonnelTeachType
                                                                                      ,PersonnelBirthday
                                                                                      ,PersonnelTeachID
                                                                                      ,PersonnelHometown
                                                                                      ,PersonnelLevel
                                                                                      ,PersonnelPhone
                                                                                      ,PersonnelTel
                                                                                      ,PersonnelCoachID
                                                                                      ,PersonnelEducation
                                                                                      ,PersonnelGraduated
                                                                                      ,PersonnelPoliticalLandscape
                                                                                      ,PersonnelGraduatedID
                                                                                      ,PersonnelSpecialty
                                                                                      ,PersonnelGraduatedDate
                                                                                      ,PersonnelInterrests
                                                                                      ,PersonnelHireDate
                                                                                      ,PersonnelAddress
                                                                                      ,PersonnelMailingAddress
                                                                                      ,PersonnelReferrals
                                                                                      ,PersonnelCompetence
                                                                                      ,PersonnelType
                                                                                      ,PersonnelRemarks
                                                                                      ,PersonnelPic
                                                                                  FROM PersonnelInfo");

            public static DataTable ExecuteDataTable(string sql, params SqlParameter[] parameters)
            {
                using (SqlConnection conn = new SqlConnection(ConnectionString))
                {
                    conn.Open();
                    using (SqlCommand cmd = conn.CreateCommand())
                    {
                        cmd.CommandText = sql;
                        cmd.Parameters.AddRange(parameters);
    
                        DataSet dataset = new DataSet();
                        SqlDataAdapter adapter = new SqlDataAdapter(cmd);
                        adapter.Fill(dataset);
                        return dataset.Tables[0];
                    }
                }
            }

    然后DATASET.TABLES[0]中存储日期的列就会自动加上00:00:00的时间,数据库里是没有时间的,如何让存在DATASET时就把时间去掉。

    后来我发现时间是在TimeOfDay属性下的,如何在存储的时候取消这个属性。

    因为还要赋值给属性,所以还不能转为STRING。

    pi. PersonnelBirthDay = (DateTime?)SqlHelper.FromDbValue(row["PersonnelBirthDay"]);


    C#初学者!~~~



    • 已编辑 呆oO 2014年8月12日 2:33
    2014年8月12日 2:15

答案

  • 我现在是想在保证数据库、属性、控件的类型都是DATETIME的前提下,对于控件上显示的日期包含与不包含时间的问题。中间如何进行转换。

    C#初学者!~~~

    • 已标记为答案 呆oO 2014年8月15日 23:13
    2014年8月13日 4:49

全部回复

  • 你好:

    C#语言里面是没有Date类型的,只有DateTime类型。所以数据库中的Date类型会自动转换为DateTime类型,没有办法去掉时间部分的。但是这并不影响你为属性赋值,因为你的pi.PersonnelBirthDay属性肯定也是DateTime类型的,只不过是可空的DateTime?类型。如果要将这个DateTime重新存储到数据库中,只需要ToString转换一下就可以了。


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.

    2014年8月13日 2:21
    版主
  • 那按照您的意思,我数据库里的类型要用STRING类型,而不是DATE类型?

    C#初学者!~~~

    2014年8月13日 4:39
  • 我现在是想在保证数据库、属性、控件的类型都是DATETIME的前提下,对于控件上显示的日期包含与不包含时间的问题。中间如何进行转换。

    C#初学者!~~~

    • 已标记为答案 呆oO 2014年8月15日 23:13
    2014年8月13日 4:49
  • 太TM简单了,在XAML文件里加一个属性就搞定了,StringFormat='yyyy-MM-dd',有时候遇到问题还得靠自己。

    <DataGridTextColumn Header="员工生日" Width="100" Binding="{Binding PersonnelBirthDay,StringFormat='yyyy-MM-dd'}" ></DataGridTextColumn>


    C#初学者!~~~


    • 已编辑 呆oO 2014年8月15日 23:15
    2014年8月15日 23:14