Dữ liệu ngày và giờ thường được quản lý bởi các hệ thống cơ sở dữ liệu và cực kỳ quan trọng, nhưng thường có thể khó xử lý chính xác hơn so với ban đầu. Cơ sở dữ liệu phải có khả năng lưu trữ dữ liệu ngày và giờ ở định dạng rõ ràng, rõ ràng, chuyển đổi dữ liệu đó thành định dạng thân thiện với người dùng để tương tác với ứng dụng khách và thực hiện các hoạt động dựa trên thời gian có tính đến sự phức tạp như múi giờ khác nhau và thay đổi về thời gian tiết kiệm ánh sáng ban ngày
Trong hướng dẫn này, chúng ta sẽ thảo luận về một số công cụ mà MongoDB cung cấp để hoạt động hiệu quả với dữ liệu ngày và giờ. Chúng ta sẽ khám phá các loại dữ liệu có liên quan, xem xét các toán tử và phương pháp, đồng thời tìm hiểu cách sử dụng tốt nhất các công cụ này để giữ cho dữ liệu ngày và giờ của bạn ở trạng thái tốt
LIÊN QUAN ĐẾN PRISMA. IO
Nếu bạn đang sử dụng MongoDB với Prisma, bạn có thể sử dụng trình kết nối MongoDB để kết nối và quản lý cơ sở dữ liệu của mình. Loại ________ 07 của Prisma thành loại ________ 08 của MongoDB
Prisma là bộ công cụ cơ sở dữ liệu mã nguồn mở dành cho Typescript và Node. js nhằm mục đích giúp các nhà phát triển ứng dụng làm việc hiệu quả và tự tin hơn khi làm việc với cơ sở dữ liệu
Các loại MongoDB use temp_db db.dates.insertMany([ { name: "Created with `Date()`", date: Date(), }, { name: "Created with `new Date()`", date: new Date(), }, { name: "Created with `ISODate()`", date: ISODate(), },])8 và { "acknowledged" : true, "insertedIds" : [ ObjectId("62726af5a3dc7398b97e6e93"), ObjectId("62726af5a3dc7398b97e6e94"), ObjectId("62726af5a3dc7398b97e6e95") ]}0
Có thể lưu trữ các giá trị ngày và giờ dưới dạng một đơn vị kết hợp
Ở đây, cột bên trái biểu thị tên BSON (JSON nhị phân) cho loại dữ liệu và cột thứ hai biểu thị số ID được liên kết với loại đó. Cột "Bí danh" cuối cùng đại diện cho chuỗi mà MongoDB sử dụng để đại diện cho loại
Loại Ngày BSON là một số nguyên 64-bit đã ký biểu thị số mili giây kể từ kỷ nguyên Unix (ngày 1 tháng 1 năm 1970). Số dương biểu thị thời gian đã trôi qua kể từ kỷ nguyên trong khi số âm biểu thị thời gian di chuyển ngược từ kỷ nguyên
Lưu trữ dữ liệu ngày và giờ dưới dạng một số nguyên lớn có lợi vì nó
cho phép MongoDB lưu trữ ngày tháng với độ chính xác đến mili giây
cung cấp sự linh hoạt trong cách hiển thị ngày và giờ
Vì loại ngày không lưu trữ thông tin bổ sung như múi giờ, ngữ cảnh đó phải được lưu trữ riêng nếu có liên quan. MongoDB sẽ lưu trữ thông tin ngày và giờ bằng UTC trong nội bộ, nhưng có thể dễ dàng chuyển đổi sang các múi giờ khác tại thời điểm truy xuất khi cần
MongoDB cũng cung cấp một cái được sử dụng chủ yếu trong nội bộ
Bởi vì điều này chủ yếu được triển khai để giúp điều phối các quy trình nội bộ như sao chép và phân đoạn, có lẽ bạn không nên sử dụng điều này trong logic của ứng dụng của riêng mình. Loại ngày thường có thể đáp ứng mọi yêu cầu về thời gian mà bạn có thể có LIÊN QUAN ĐẾN PRISMA. IO Khi quản lý cơ sở dữ liệu MongoDB bằng Prisma, loại MongoDB
use temp_db
db.dates.insertMany([ { name:"Created with `Date()`", date:Date(), }, { name:"Created with `new Date()`", date:newDate(), }, { name:"Created with `ISODate()`", date:ISODate(), }, ])
8 thành loại
use temp_db
db.dates.insertMany([ { name:"Created with `Date()`", date:Date(), }, { name:"Created with `new Date()`", date:newDate(), }, { name:"Created with `ISODate()`", date:ISODate(), }, ])
7 trong Prisma Prisma là bộ công cụ cơ sở dữ liệu mã nguồn mở dành cho Typescript và Node. js nhằm mục đích giúp các nhà phát triển ứng dụng làm việc hiệu quả và tự tin hơn khi làm việc với cơ sở dữ liệu
Cách tạo ngày mới
Bạn có thể tạo một đối tượng
use temp_db
db.dates.insertMany([ { name:"Created with `Date()`", date:Date(), }, { name:"Created with `new Date()`", date:newDate(), }, { name:"Created with `ISODate()`", date:ISODate(), }, ])
db.dates.insertMany([ { name:"Created with `Date()`", date:Date(), }, { name:"Created with `new Date()`", date:newDate(), }, { name:"Created with `ISODate()`", date:ISODate(), }, ])
74 mà không có hàm tạo
use temp_db
db.dates.insertMany([ { name:"Created with `Date()`", date:Date(), }, { name:"Created with `new Date()`", date:newDate(), }, { name:"Created with `ISODate()`", date:ISODate(), }, ])
75 trả về ngày và giờ dưới dạng chuỗi thay vì đối tượng
use temp_db
db.dates.insertMany([ { name:"Created with `Date()`", date:Date(), }, { name:"Created with `new Date()`", date:newDate(), }, { name:"Created with `ISODate()`", date:ISODate(), }, ])
8
use temp_db
db.dates.insertMany([ { name:"Created with `Date()`", date:Date(), }, { name:"Created with `new Date()`", date:newDate(), }, { name:"Created with `ISODate()`", date:ISODate(), }, ])
74. Trả về ngày và giờ dưới dạng chuỗi
Điều quan trọng cần lưu ý là sự khác biệt giữa hai loại này vì nó ảnh hưởng đến những hoạt động nào có sẵn, cách thông tin được lưu trữ và mức độ linh hoạt mà nó sẽ mang lại cho bạn. Nói chung, tốt nhất là lưu trữ thông tin ngày tháng bằng cách sử dụng loại
use temp_db
db.dates.insertMany([ { name:"Created with `Date()`", date:Date(), }, { name:"Created with `new Date()`", date:newDate(), }, { name:"Created with `ISODate()`", date:ISODate(), }, ])
8 và sau đó định dạng nó để xuất ra khi cần Chúng ta hãy xem cách nó hoạt động trong phiên shell MongoDB Đầu tiên, chúng ta có thể chuyển sang một cơ sở dữ liệu tạm thời mới và tạo ba tài liệu mà mỗi tài liệu có một trường
use temp_db
db.dates.insertMany([ { name:"Created with `Date()`", date:Date(), },
7. Chúng tôi sử dụng một phương pháp khác để điền vào trường
use temp_db
db.dates.insertMany([ { name:"Created with `Date()`", date:Date(), }, { name:"Created with `new Date()`", date:newDate(), }, { name:"Created with `ISODate()`", date:ISODate(), }, ])
7 cho từng đối tượng
use temp_db
db.dates.insertMany([ { name:"Created with `Date()`", date:Date(), }, { name:"Created with `new Date()`", date:newDate(), }, { name:"Created with `ISODate()`", date:ISODate(), }, ])
Theo mặc định, mỗi cơ chế này sẽ lưu trữ ngày giờ hiện tại. Bạn có thể lưu trữ ngày và giờ khác bằng cách thêm chuỗi ngày được định dạng ISO 8601 làm đối số
use temp_db
db.dates.insertMany([ { name:"Created with `Date()`", date:Date(), }, { name:"Created with `new Date()`", date:newDate(), }, { name:"Created with `ISODate()`", date:ISODate(), }, ])
7 Chúng sẽ tạo một đối tượng
use temp_db
db.dates.insertMany([ { name:"Created with `Date()`", date:Date(), }, { name:"Created with `new Date()`", date:newDate(), }, { name:"Created with `ISODate()`", date:ISODate(), }, ])
8 vào ngày giờ thích hợp Một điều cần lưu ý là sự bao gồm của _____282 trong tài liệu mới đầu tiên ở trên. Điều này cho biết rằng ngày và giờ đang được cung cấp dưới dạng UTC. Việc chỉ định ngày không có
use temp_db
db.dates.insertMany([ { name:"Created with `Date()`", date:Date(), }, { name:"Created with `new Date()`", date:newDate(), }, { name:"Created with `ISODate()`", date:ISODate(), }, ])
82 sẽ khiến MongoDB diễn giải đầu vào liên quan đến giờ địa phương hiện tại (mặc dù nó sẽ luôn chuyển đổi và lưu trữ dưới dạng ngày UTC trong nội bộ)
{ name:"Created with `new Date()`", date:newDate(), }, { name:"Created with `ISODate()`", date:ISODate(), }, ])
Xác thực loại đối tượng ngày
Tiếp theo, chúng ta có thể hiển thị các tài liệu kết quả để xem cách MongoDB lưu trữ dữ liệu ngày tháng
use temp_db
db.dates.insertMany([ { name:"Created with `Date()`", date:Date(), }, { name:"Created with `new Date()`", date:newDate(), }, { name:"Created with `ISODate()`", date:ISODate(), }, ])
Cách sử dụng các phương thức loại use temp_db db.dates.insertMany([ { name: "Created with `Date()`", date: Date(), }, { name: "Created with `new Date()`", date: new Date(), }, { name: "Created with `ISODate()`", date: ISODate(), },])8
Bạn có thể thao tác trên các đối tượng
use temp_db
db.dates.insertMany([ { name:"Created with `Date()`", date:Date(), }, { name:"Created with `new Date()`", date:newDate(), }, { name:"Created with `ISODate()`", date:ISODate(), }, ])
8 với nhiều phương thức và toán tử đi kèm. Chẳng hạn, bạn có thể trích xuất các thành phần ngày và giờ khác nhau từ một ngày và in ở nhiều định dạng khác nhau Trình diễn có lẽ là cách nhanh nhất để giới thiệu chức năng này Trước tiên, hãy chọn ngày từ tài liệu có đối tượng ngày
7 Ngoài ra còn có các phương pháp đồng hành có thể được sử dụng để đặt thời gian bằng cách cung cấp các thành phần ngày và giờ khác nhau. Ví dụ: bạn có thể thay đổi năm bằng cách gọi phương thức
9 Chúng tôi cũng có thể truyền ngày thành các định dạng khác nhau để hiển thị
use temp_db
db.dates.insertMany([ { name:"Created with `Date()`", date:Date(), }, { name:"Created with `new Date()`", date:newDate(), }, { name:"Created with `ISODate()`", date:ISODate(), }, ])
0
use temp_db
db.dates.insertMany([ { name:"Created with `Date()`", date:Date(), }, { name:"Created with `new Date()`", date:newDate(), }, { name:"Created with `ISODate()`", date:ISODate(), }, ])
1 Đây là tất cả các phương thức chủ yếu được liên kết với loại
use temp_db
db.dates.insertMany([ { name:"Created with `Date()`", date:Date(), }, { name:"Created with `new Date()`", date:newDate(), }, { name:"Created with `ISODate()`", date:ISODate(), }, ])
8 của JavaScript
date:ISODate(), }, ])
Cách sử dụng các hàm tổng hợp MongoDB use temp_db db.dates.insertMany([ { name: "Created with `Date()`", date: Date(), }, { name: "Created with `new Date()`", date: new Date(), }, { name: "Created with `ISODate()`", date: ISODate(), },])8
MongoDB cung cấp một số chức năng khác cũng có thể thao tác ngày tháng. Một ví dụ hữu ích về điều này là hàm tổng hợp
79 của mình bằng một chuỗi tùy ý. Chúng tôi cũng sẽ chuyển ngày sang múi giờ New York Trước tiên, chúng tôi cần xóa mọi tài liệu thất lạc có thể đã lưu trường
use temp_db
db.dates.insertMany([ { name:"Created with `Date()`", date:Date(), }, { name:"Created with `new Date()`", date:newDate(), }, { name:"Created with `ISODate()`", date:ISODate(), }, ])
7 dưới dạng chuỗi
use temp_db
db.dates.insertMany([ { name:"Created with `Date()`", date:Date(), }, { name:"Created with `new Date()`", date:newDate(), }, { name:"Created with `ISODate()`", date:ISODate(), }, ])
2 Bây giờ chúng ta có thể chạy một tập hợp với hàm
62 cũng hữu ích tương tự. Nó có thể được sử dụng để phân tách trường
use temp_db
db.dates.insertMany([ { name:"Created with `Date()`", date:Date(), }, { name:"Created with `new Date()`", date:newDate(), }, { name:"Created with `ISODate()`", date:ISODate(), }, ])
8 thành các phần cấu thành của nó Ví dụ, chúng ta có thể gõ
use temp_db
db.dates.insertMany([ { name:"Created with `Date()`", date:Date(), }, { name:"Created with `new Date()`", date:newDate(), }, { name:"Created with `ISODate()`", date:ISODate(), }, ])
5
use temp_db
db.dates.insertMany([ { name:"Created with `Date()`", date:Date(), }, { name:"Created with `new Date()`", date:newDate(), }, { name:"Created with `ISODate()`", date:ISODate(), }, ])
6 Có thông tin về các chức năng bổ sung mà bạn có thể sử dụng để thao tác với các đối tượng
use temp_db
db.dates.insertMany([ { name:"Created with `Date()`", date:Date(), }, { name:"Created with `new Date()`", date:newDate(), }, { name:"Created with `ISODate()`", date:ISODate(), }, ])
8 để hiển thị hoặc so sánh
Phần kết luận
Trong hướng dẫn này, chúng tôi đã đề cập đến một số cách khác nhau mà bạn có thể làm việc với dữ liệu ngày và giờ trong MongoDB. Hầu hết dữ liệu tạm thời có lẽ nên được lưu trữ trong kiểu dữ liệu
use temp_db
db.dates.insertMany([ { name:"Created with `Date()`", date:Date(), }, { name:"Created with `new Date()`", date:newDate(), }, { name:"Created with `ISODate()`", date:ISODate(), }, ])
8 của MongoDB vì điều này mang lại sự linh hoạt tốt khi thao tác trên dữ liệu hoặc hiển thị dữ liệu đó Làm quen với cách dữ liệu ngày và giờ được lưu trữ nội bộ, cách ép buộc dữ liệu đó thành các định dạng mong muốn trên đầu ra và cách so sánh, sửa đổi và phân tách dữ liệu thành các phần hữu ích có thể giúp bạn giải quyết nhiều vấn đề khác nhau. Mặc dù thông tin ngày tháng có thể khó xử lý, nhưng việc tận dụng các phương pháp và người vận hành có sẵn có thể giúp giảm thiểu một số công việc nặng nhọc LIÊN QUAN ĐẾN PRISMA. IO Nếu bạn đang sử dụng MongoDB, hãy kiểm tra trình kết nối MongoDB của Prisma. Bạn có thể tự tin sử dụng Prisma Client để quản lý cơ sở dữ liệu MongoDB sản xuất Để bắt đầu làm việc với MongoDB và Prisma, hãy xem hướng dẫn bắt đầu từ đầu của chúng tôi hoặc cách thêm vào một dự án hiện có
Làm cách nào để tìm dấu thời gian trong MongoDB?
getTimestamp() Trả về phần dấu thời gian của ObjectId() dưới dạng Ngày.
Định dạng dấu thời gian MongoDB là gì?
Dấu thời gian. BSON có loại dấu thời gian đặc biệt để sử dụng MongoDB nội bộ và không được liên kết với loại Ngày thông thường. Loại dấu thời gian bên trong này là một giá trị 64 bit trong đó. 32 bit quan trọng nhất là giá trị time_t (giây kể từ kỷ nguyên Unix)
MongoDB lưu dấu thời gian như thế nào?
MongoDB lưu trữ thời gian ở dạng UTC theo mặc định và sẽ chuyển đổi bất kỳ biểu thị giờ địa phương nào sang dạng này. Các ứng dụng phải vận hành hoặc báo cáo về một số giá trị thời gian địa phương chưa sửa đổi có thể lưu trữ múi giờ cùng với dấu thời gian UTC và tính toán thời gian địa phương ban đầu trong logic ứng dụng của chúng.
Làm cách nào để đặt thời gian trong MongoDB?
new Date("") specifies the datetime in the client's local timezone and returns the ISODate with the specified datetime in UTC. new Date("") specifies the datetime in UTC and returns the ISODate with the specified datetime in UTC.