【发布时间】:2016-03-13 14:56:29
【问题描述】:
我在 ms-sql 数据库中有一个表,其中包含如下列中的日期:
2012-10-31 00:00:00.000
此列被列为“日期时间”类型。如在 ms sql server management studio 中,我展开表,然后展开列,然后查看 Dates(PK, datetime, not null)。
然后在 c# 中,我使用语句获取这些日期,并将其分配给一个变量,该变量填充使用 asp.net 制作的网页上的网格列。 sql语句只是获取用户的最后一个条目。
SqlCommand command = new SqlCommand();
//connection info here
sql2 = "select max(day) as day from users u join days d on d.User_ID = u.id where u.ActiveUser = 1 and u.id = " + Users["ID"].ToString();;
command.CommandText = sql2;
dates["Entry"] = command.ExecuteScalar();
这会像这样填充列中的日期:
10/31/2012 12:00:00 AM
现在,我不知道为什么会这样转换。我在调试时一直在跟踪数据,它使用 command.ExecuteScalar() 函数进行了更改。我想要的格式是:
10/31/2012
没有 hh/mm/ss AM。
我无法让任何日期时间转换/解析/格式正常工作。我为此花了四天时间。我在这里问了一个类似的问题:Converting date to proper format,尝试了所有不同的建议。
在此期间我正在做的是:
string dt = command.ExecuteScalar().ToString();
dt = dt.Substring(0, dt.IndexOf(" ") + 1);
dates["Entry"] = dt;
删除返回的日期字符串中空格后的所有文本。这没关系,除了我想比较我得到的这些日期,所以我需要它们在 DateTime 中。试图将这些字符串转换为 DateTime 是行不通的。
编辑:定义和类型 -
DataRow dates;
//for loop here going through for each user
dates = _dtuserhours.NewRow(); // _dtuserhours is a DataTable
//Sql statements here
_dtuserhours = new DataTable("newtable");
DataColumn column;
column = new DataColumn();
column.DataType = System.Type.GetType("System.String");
column.ColumnName = "Entry";
_dtUserHours.Columns.Add(column);
【问题讨论】:
-
您是否尝试过使用日期作为列数据类型而不是日期时间?
-
很好的建议,但我无法使用数据库更改任何内容。我可以从中获取任何内容来阅读,但不能对其进行修改。
标签: c# asp.net sql-server datetime