【问题标题】:Cannot implicitly convert type 'System.DateTime' to 'string'无法将类型“System.DateTime”隐式转换为“字符串”
【发布时间】:2023-03-15 04:38:01
【问题描述】:

我正在尝试输出一个 excel 文件,其中一部分将 createddate 的值从名为 outofstock 的表中放入该行当前放入 0

如果我运行这个 SQL,它会显示一切正常

select wo.email, wo.productid, wo.variantid,  p.NAME pname,  
       p.SKU psku, wo.createdon, pc.CategoryID, c.Name
from woeosemails wo 
join Product p with (nolock) on p.ProductID = wo.productid
left join ProductCategory as pc (nolock) on p.ProductID=pc.ProductID
left join Category as c (nolock) on pc.CategoryID=c.CategoryID
order by wo.createdon, wo.email, wo.productid

问题在于生成输出的 aspx.cs 文件中的这一行

createdon = DB.RSFieldDateTime(NotifyReader, "createdon"); 

我不知道之前要放置什么类型(int、string 等)。在 SQL 表中,DataType 是 datetime,但使用它似乎不起作用。

有什么想法吗?

string email = DB.RSField(NotifyReader, "email");
int productid = DB.RSFieldInt(NotifyReader, "productid");
int variantid = DB.RSFieldInt(NotifyReader, "variantid");
string createdon = DB.RSFieldDateTime(NotifyReader, "createdon"); 
string psku = DB.RSField(NotifyReader, "psku");
string pname = DB.RSField(NotifyReader, "pname");
string cname = DB.RSField(NotifyReader, "cname");

【问题讨论】:

标签: c# sql datetime


【解决方案1】:

嗯,错误很明显:您不能将 DateTime 自动转换为字符串。
你应该使用

DateTime createdon = DB.RSFieldDateTime(NotifyReader, "createdon");

string createdon = DB.RSFieldDateTime(NotifyReader, "createdon").ToString();

还请记住,您可以使用特定格式在字符串中表示您的日期(请参阅http://msdn.microsoft.com/en-us/library/8kb3ddd4(v=vs.110).aspx

【讨论】:

  • 另外,您可能希望在此处使用显式格式,否则它取决于语言环境。这在一定程度上取决于您想要/需要做什么,但对于用户看不到的任何内容,明确的格式可能是最好的方法。
  • 谢谢@Јοеу,我正在编辑我的答案,以便在您发表评论时包含正确的内容:)
  • 谢谢!盯着这个看了这么久我没有看到 To.String();在最后!也感谢那个链接!非常感谢
猜你喜欢
  • 2011-05-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-01-18
  • 1970-01-01
相关资源
最近更新 更多