0

在我的 GridView 中,我可以像mm/dd/yy往常一样看到我的日期列,但是当我选择一条记录并像这样分配一个字符串时

GridViewRow row = GridView1.SelectedRow;
string sdate= row.Cells[2].Text; //Date is in Column 2

当我输出这个sdate字符串时,它返回:1368309600000

如果我尝试转换它,它不起作用,我试图从 SQL 数据库中选择一些东西,我得到这个错误

从字符串转换日期和/或时间时转换失败

编辑:SQL 语句中用于转换的部分是:

convert(datetime, '" + sdate +"', 101"+")

我怀疑问题sdate本身,但我不确定

4

2 回答 2

0

Your date string appears to be expressed as the number of milliseconds since January 1, 1970, 00:00:00 GMT. The T-SQL CONVERT() function doesn't support this format. So, you could do a conversion to a C# DateTime like this...

DateTime date = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc)
                   .AddMilliseconds(Convert.ToDouble(sdate));

1368309600000 converts to 11/05/2013 22:00:00Z (this is UTC)

Then adjust for local time and reformat the date for your SQL string like this...

"convert(datetime, '" + date.ToLocalTime().ToString("MM/dd/yyyy") + "', 101)"
于 2013-05-12T07:32:06.030 回答
-2
UpdateCommand="UPDATE [dbo].[ENTRY] set [_DATE] = CONVERT( date  , @_DATE ,103)  where   [NO] = @NO  "

这里的重要部分是 103,它用于格式 dd-mm-yyyy 检查您的本地格式。这个问题只会出现在美国以外的人身上。

于 2015-05-06T03:48:50.897 回答