簡體   English   中英

Perl如何在mongodb中插入日期時間

[英]Perl How to insert datetime in mongodb

我是MongoDB的新手,我將MySQL格式的日期存儲在類似2018-08-13 09:56:19的數組中,並且我想在MongoDB中存儲帶time_zone -0500的ISODate,以便將日期插入為"Date" : ISODate("2018-08-13T09:56:19.000-05:00")通過Perl "Date" : ISODate("2018-08-13T09:56:19.000-05:00")

任何幫助感激...

您需要使用講MySQL格式的DateTime解析器,但是MongoDB會正確轉換DateTime對象。 但是,為了提高效率,在查詢時它不會自動膨脹回DateTime對象,而是使用中間形式BSON :: Time 有一種方法as_datetime ,用於獲取DateTime對象。

請參閱以下示例:

use Data::Dumper;
use DateTime::Format::MySQL;
use DateTime::Format::RFC3339;
use MongoDB;

# parse the date
my $dt = DateTime::Format::MySQL->parse_datetime( '2003-01-16 23:12:01' );
$dt->set_formatter("DateTime::Format::RFC3339");
say $dt;
# 2003-01-16T23:12:01+00:00

# set TZ
$dt->set_time_zone("America/New_York");
say $dt;
# 2003-01-16T23:12:01-05:00

# connect to the DB and get a MongoDB::Collection to work with
my $mc = MongoDB->connect("mongodb://localhost:27017");
my $coll = $mc->ns('test.foo');

# insert
$coll->insert_one({ date => $dt });

# query
my $doc = $coll->find_one({date => $dt});

# dump the doc -- note the date is now a BSON::Time and there's a
# MongoDB '_id' field added
say Dumper $doc;
# $VAR1 = {
#           '_id' => bless( {
#                             'oid' => '[vöZN@®G¿Ç'
#                           }, 'BSON::OID' ),
#           'date' => bless( {
#                              'value' => '1042776721000'
#                            }, 'BSON::Time' )
#         };

# get it back as a DateTime object and print it out
my $date = $doc->{date}->as_datetime;
$date->set_formatter("DateTime::Format::RFC3339");
say $date;
# 2003-01-17T04:12:01Z
$date->set_time_zone("America/New_York");
say $date;
# 2003-01-16T23:12:01-05:00

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM