Tôi có một bảng với hai cột cột đầu tiên là dấu thời gian (currentdate) và cột kia là cột ngày giờ (dateReturn) .ii cần có sự khác biệt giữa currentdate và dateReturn từ số ngày. khả thi?timestamp và datetime
Trả lời
Không, điều này là không thể.
Trái ngược với niềm tin phổ biến (và tên chính nó), một cột timestamp
không thực sự liên quan đến thời gian.
Disclaimer: Câu trả lời này là cụ thể cho Sql Server (theo các thẻ của câu hỏi), động cơ sở dữ liệu khác có thể có triển khai khác nhau ở đây. *
Thay vào đó, nó là số 64 bit tăng đều đặn. Giá trị của số được chia sẻ giữa tất cả các bảng trong một cơ sở dữ liệu duy nhất có cột dấu thời gian như vậy. Nói cách khác, nếu bạn có hai bảng như vậy, sửa đổi một hàng trong một, và sửa đổi một hàng trong khác, giá trị của dấu thời gian trong bảng đầu tiên sẽ là X, và trong bảng thứ hai sẽ là X + 1.
as per the documentation of timestamp:
Mỗi cơ sở dữ liệu có được một bộ đếm được tăng lên cho mỗi chèn hoặc cập nhật hoạt động được thực hiện trên một bảng có chứa một cột timestamp trong cơ sở dữ liệu. Bộ đếm này là dấu thời gian cơ sở dữ liệu. Điều này theo dõi thời gian tương đối bên trong cơ sở dữ liệu, không phải thời gian thực có thể được liên kết với đồng hồ.
Như vậy, giá trị không liên quan đến ngày và/hoặc thời gian thực tế hàng được chèn hoặc sửa đổi lần cuối và không thể chuyển đổi thành ngày/giờ theo bất kỳ cách nào.
Mục đích duy nhất của cột timestamp
là phải có thứ gì đó độc đáo, được đảm bảo sẽ tăng lên. Vì giá trị là 64 bit, bạn sẽ có quyền truy cập vào các hoạt động 18 446 744 073 709 551 616
yêu cầu cột timestamp
trước khi đặt lại giá trị. Nếu bạn có một cơ sở dữ liệu có thể xử lý một triệu hoạt động như vậy mỗi giây, bạn sẽ vẫn phải chờ khoảng 584 554 năm trước khi giá trị đặt lại, vì vậy tôi sẽ nói nó đáp ứng các yêu cầu duy nhất.
Loại dữ liệu timestamp trong máy chủ sql không lưu trữ ngày hoặc giờ. Nó là nhiều hơn một phiên bản duy trì cột được cập nhật mỗi khi hàng được cập nhật. Vì vậy, bạn nên xem xét lại kiểu dữ liệu của cột này
Nếu cột của bạn có loại tương đối (tương đối hiếm) timestamp
, câu trả lời của Lasse V. Karlsen là đúng.
Nếu cả hai cột có kiểu datetime
, bạn có thể:
select datediff(day, dateReturn, currentdate)
from YourTable
Xem datediff function.
- 1. Unix timestamp VS datetime
- 2. Lưu trữ C# datetime để postgresql TimeStamp
- 3. unix timestamp để datetime trong android
- 4. MySQL: Cách tốt nhất để sử dụng, Unix TimeStamp hoặc DATETIME
- 5. ISO 8601 Timestamp cho cơ sở dữ liệu MySQL: MySQL giá trị datetime sai
- 6. git: múi giờ và timestamp định dạng
- 7. Nullable DateTime?
- 8. datetime và timedelta
- 9. DateTime và CultureInfo
- 10. Đặt định dạng DateTime
- 11. Timestamp chuyển đổi JavaScript
- 12. gnuplot đọc unix timestamp
- 13. python postgres pointer timestamp issue
- 14. DateTime trong VB.NET và C#
- 15. ngày php từ unix timestamp
- 16. Oracle kiểu dữ liệu timestamp
- 17. MySQL GROUP BY UNIX TIMESTAMP
- 18. Sử dụng TIMESTAMP của MySQL và lưu trữ dấu thời gian trực tiếp
- 19. JDBC Timestamp & ngày giờ hành
- 20. log4j ConversionPattern timestamp với micro
- 21. Parse timestamp với a.m./p.m
- 22. mysql trì hoãn chèn timestamp
- 23. Cách cập nhật cột TIMESTAMP thành TIMESTAMP WITH TIME ZONE trong Oracle
- 24. "DateTime-> sửa đổi ('+ 0 ngày')" Sửa đổi đối tượng DateTime
- 25. Đặt ActiveRecord/Rails sử dụng cột mysql TIMESTAMP thực tế
- 26. Cập nhật TSQL phút và giây DATETIME
- 27. Sự khác biệt giữa 'DateTime' và 'DateTimeOffset'
- 28. Tạo DATETIME từ DATE và TIME
- 29. Django datefield và timefield để python datetime
- 30. Khi sử dụng VARCHAR và DATE/DATETIME
Hầu hết thời gian, cột dấu thời gian có nghĩa là cột có loại "datetime" và đặt tên "dấu thời gian". Cột có loại "dấu thời gian" tương đối hiếm. – Andomar
Trong trường hợp này, anh ta nói cụ thể một cột là một ngày giờ và một dấu thời gian khác. –
Nói cách khác, tên 'currentdate', là một bit của một từ sai. Nếu trường được cho là giữ ngày tháng và thời gian sửa đổi cuối cùng (hoặc chèn ban đầu), thì dấu thời gian 'là kiểu dữ liệu sai, và cột ngày giờ và kích hoạt hoặc tương tự là phù hợp hơn. –