如何从字符串转换为日期数据类型?

Posted

技术标签:

【中文标题】如何从字符串转换为日期数据类型?【英文标题】:How to convert from string to date data type? 【发布时间】:2013-03-06 14:37:25 【问题描述】:

我正在将数据从 csv 文件上传到 MongoDB。它采用OrderDate 作为字符串数据类型,因为在使用 BI 工具创建报告时会遇到问题。 我的收藏中有大约 10000 条记录。

谁能帮助我如何通过单个查询将OrderDate 的数据类型更改为日期?

【问题讨论】:

Converting string to date in mongodb的可能重复 【参考方案1】:
db.messages.find().forEach(function(doc) 
  doc.headers.datestamp = new Date(Date.parse(doc.headers.Date.toString())); 
  db.messages.save(doc);
  )

这很适合转换这种文本: 2007 年 11 月 14 日星期二 03:22:00 -0800 (PST)

文本来自名为安然语料库的电子邮件存档。

【讨论】:

作为仅供参考,Collection.save() 已被弃用。错误说明:“使用 insertOne、insertMany、updateOne 或 updateMany。”【参考方案2】:

我认为您不能通过单个查询来更改字段的类型。最简单的方法是在插入过程中使用ISODate 函数将数据字符串转换为Date 格式。但是,如果你想处理你已经插入的数据,你可以使用 mongodb 控制台使用以下代码:

db.collection.find().forEach(function(element)
  element.OrderDate = ISODate(element.OrderDate);
  db.collection.save(element);
)

此代码将处理集合collection 中的每个元素,并将Orderdate 字段的类型从String 更改为Date

【讨论】:

谢谢你真的很有帮助。但在这里我看到它创造了一个新的领域。有没有办法在不创建新字段的情况下更改现有字段。 这是用新值重写旧字段,而不是创建新值。 @divya MongoDB 区分大小写。您从 OrderDate 字段中获取值并将新值放入 another 字段 Orderdate,而不是使用相同的值。我用正确的字段名称编辑了你的问题和我的答案。 如何以相反的方式将它从日期类型转换为字符串......很难。 @Lion789 你试过.toISOString()吗?

以上是关于如何从字符串转换为日期数据类型?的主要内容,如果未能解决你的问题,请参考以下文章

如何将 MongoDB 中的属性从文本类型转换为日期类型?

java中如何将字符串转换成日期型

linq 怎么转换日期为字符串

如何在 flex 中将字符串数据类型转换为日期数据类型

linq 怎么转换日期为字符串

如何把Excel中的8位的日期字符串转换为日期