2011-10-20 36 views
9

Tôi đang sử dụng MS SQL Server 2008, và trong một bảng tôi có cột idate là ngày nhưng ở định dạng số nguyên. Nhưng trong truy vấn tôi muốn ở định dạng ngày tháng. Có thể chuyển đổi ngày nguyên thành định dạng ngày giờ thích hợp không?Làm thế nào để chuyển đổi int đến ngày trong SQL Server 2008

+0

Khi bạn nói rằng bạn có ngày ở định dạng số nguyên, ý của bạn là gì - định dạng là gì? – condiosluzverde

+0

davey là chính xác. 'DATEADD (DAY, 40835, '1900-01-01')' nhanh hơn một chút trong các bài kiểm tra mà tôi đã chạy. –

Trả lời

15

Bạn không thể chuyển đổi một giá trị số nguyên thẳng đến một ngày nhưng bạn có thể đầu tiên nó vào một datetime sau đó đến một loại ngày

select cast(40835 as datetime)

và sau đó chuyển đổi sang một ngày khác (SQL 2008)

select cast(cast(40835 as datetime) as date)

cổ vũ

+1

chỉ đọc lại câu hỏi của bạn, nếu muốn như một ngày tháng sau đó chỉ cần chọn cast (40835 là datetime) – davey

1

Bạn rất có thể muốn kiểm tra các tài liệu cho CAST T-SQL và CONVERT chức năng, nằm trong tài liệu ở đây: http://msdn.microsoft.com/en-US/library/ms187928(v=SQL.90).aspx

Sau đó bạn sẽ sử dụng một trong những chức năng trong truy vấn T-SQL của bạn để chuyển đổi cột [idate] từ cơ sở dữ liệu vào định dạng ngày giờ theo ý thích của bạn trong đầu ra.

3

Bạn phải lần đầu tiên chuyển đổi nó sang datetime, sau đó đến d ăn.

Hãy thử điều này, nó có thể hữu ích:

Select Convert(DATETIME, LEFT(20130101, 8)) 

sau đó chuyển đổi cho đến nay.

0

Đọc qua điều này giúp giải quyết vấn đề tương tự. Dữ liệu nằm trong kiểu dữ liệu thập phân - [DOB] [thập phân] (8, 0) NOT NULL - ví dụ - 19700109. Tôi muốn nhận được vào tháng. Giải pháp là kết hợp SUBSTRING với CONVERT với VARCHAR.

SELECT [NUM] 
     ,SUBSTRING(CONVERT(VARCHAR, DOB),5,2) AS mob 
    FROM [Dbname].[dbo].[Tablename] 
0

Nếu số nguyên của bạn là dấu thời gian trong mili giây sử dụng:

SELECT strftime("%Y-%d-%m", col_name, 'unixepoch') AS col_name 

Nó sẽ định dạng mili giây để chuỗi yyyy-mm-dd.

+0

Câu hỏi là về MS SQL Server mà không có bất kỳ chức năng 'strftime' (mà tôi tin là một hàm SQLite?) – jpw

Các vấn đề liên quan