Ngày của bạn thực sự là một giá trị số (float hoặc số nguyên), được lưu trữ trong cột char. Vì vậy, bạn cần chuyển nó thành giá trị số (trong trường hợp này là float
) đầu tiên, như:
select convert(datetime, CONVERT(float,date_column))
Giá trị 41547.5
sẽ dẫn đến:
`2013-10-02 12:00:00`
Đối số kiểu, trong trường hợp của bạn là 6
chỉ cần thiết khi chuyển đổi từ hoặc sang kiểu char. Trong trường hợp này, nó không cần thiết và sẽ được bỏ qua.
NB:Giá trị float là số ngày kể từ 1900-01-01
.
ví dụ. select convert(datetime, CONVERT(float,9.0))
=> 1900-01-10 00:00:00
; giống như select dateadd(day,9.0,'1900-01-01')
sẽ.
Phần thập phân của số cũng tương đương với ngày; vì vậy 0.5
là nửa ngày / 12 giờ.
ví dụ. select convert(datetime, CONVERT(float,.5))
=> 1900-01-01 12:00:00
. (Ở đây so sánh của chúng tôi với dateadd không có ý nghĩa, vì điều đó chỉ liên quan đến số nguyên chứ không phải số thực).