2012-05-09 23 views
5

Tôi nhận lỗi chuyển đổi khi chạy sql dưới đây trong thủ tục lưu trữ becasue của một số lý do tôi không thể đúc thành varcharchuyển đổi thất bại khi chuyển đổi datetime từ chuỗi ký tự trong thủ tục lưu trữ

Declare @sql varchar(100) 
Declare @ddtime datetime 

set @ddtime = '2012-02-03 22:14:50.057' 

set @sql = 'select * from table1 where tdate='[email protected] 

exec(@sql) 
+0

Bạn đang cố gắng chọn một số lượng hồ sơ vào một chuỗi? Đó là những gì mã của bạn đang làm. – Lazarus

Trả lời

10

Bạn cần phải chuyển đổi @ddtime đến một varchar kể từ khi bạn đã bao gồm nó trong một chuỗi:

Declare @sql varchar(100) 
Declare @ddtime datetime 

set @ddtime = '2012-02-03 22:14:50.057' 

set @sql = 'select * from table1 where tdate= '''+ convert(nvarchar(25), @ddtime, 121) + '''' 

exec(@sql) 

hoặc chỉ có bạn @ddtime như một varchar thay vì một datetime.

Declare @ddtime varchar(25) 

convert(varchar(25), @ddtime, 121) để ngày của bạn ở cùng định dạng mà ban đầu bạn đặt.

How to format datetime & date in Sql Server

+0

bạn đang thiếu ''' trong dấu bằng ..... –

+0

Tôi cũng đang cố thực hiện sql mà tôi không đề cập đến trong câu hỏi. vì vậy chỉ cần cập nhật nó –

+0

@RoyiNamir bạn là chính xác tôi đã sửa nó. Cảm ơn – Taryn

1

Thay đổi kiểu dữ liệu biến @ddtime thành varchar. Bạn đang cố gắng ghép nối varchar và datetime.

+0

Tôi cũng đang cố gắng thực hiện sql mà tôi không đề cập đến trong câu hỏi. vì vậy chỉ cần cập nhật nó –

0

ddtime của bạn là datetime

bạn không thể kết nối nó với chuỗi.

thay đổi

set @sql = 'select * from table1 where tdate='''+cast (@ddtime as nvarchar(100))+'''' 

hoặc

thay đổi

Declare @ddtime nvarchar(100) 
+0

Tôi cũng đang cố gắng thực hiện sql mà tôi không đề cập đến trong câu hỏi. vì vậy chỉ cần cập nhật nó –

+0

thay đổi jsut để exec thay vì in –

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