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

时间:2013-05-12 06:00:25

标签: c# asp.net sql sql-server

在我的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本身,但我不确定

2 个答案:

答案 0 :(得分:0)

您的日期字符串似乎表示为自 1970年1月1日00:00:00 GMT 以来的毫秒数。 T-SQL CONVERT()函数不支持此格式。所以,您可以像这样转换为C#DateTime ......

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

1368309600000转换为11/05/2013 22:00:00Z(这是UTC)

然后调整本地时间并重新格式化SQL字符串的日期,如下所示......

"convert(datetime, '" + date.ToLocalTime().ToString("MM/dd/yyyy") + "', 101)"

答案 1 :(得分:-2)

for word_list in cleaned_example:
    sentiments = [sentiment(word)[0] for word in word_list]
    for i in range(len(sentiments)):
        if sentiments[i] < sentiments[i+1]:
            print('yes')
        else: 
            print('no')

这里重要的部分是103,它是格式dd-mm-yyyy 看看你当地的格式。 对于美国以外的人来说,这个问题才会出现。