Sql服务器传递日期值作为参数与转换

问题描述:

我写了一个SQL选择数据之间的日期和另一个。 基本问题是关于我想取得了一些选择Sql服务器传递日期值作为参数与转换

明杆我的名字是date_tm和样本数据这样的日期格式:2011-04-04 00:30:19.107

我的SQL是这样的:

DECLARE @Date_From DATETIME; 
DECLARE @Date_To DATETIME; 

SET @Date_From = CONVERT(VARCHAR(10),DATEADD(d,DATEDIFF(d,0,GETDATE()),0)-1,120); 
SET @Date_To = CONVERT(VARCHAR(10),DATEADD(d,DATEDIFF(d,0,GETDATE()),0)-1,120); 

select distinct no, lot 
from database.dbo.TblName 
Where Convert(varchar(10), Date_Tm, 120) Between '@Date_From' And '@Date_To'; 

我尝试使用这个

Print(@Date_From); 
Print(@Date_To); 

的输出是这样的 “2011年11月6日12:00 AM” 调试它我不能转换其alreadly ? 然后我用select语句这样的测试:

的输出是这样的“2011-11-06”为什么它在这里工作?

选择的结果是什么==”

话,我就在此日期格式 我尝试直接解析在date_from和DATE_TO

where Convert(varchar(10), Date_Tm, 120) Between '2011-04-04' And '2011-04-04' 

大量的测试,我得到的期望是什么

无论如何,我想要的是通过一系列日期获取数据。我用这种转换方法粉碎了我的脑袋==“

Plea我帮助我。

谢谢:

PS:请不要犹豫,以表明我的错误。我们都从错误中学习,并为我可怜的英语感到遗憾。

问候:

LiangCk

这是因为你的声明两个变量作为日期时间,而不是为varchar(10)。 SQL会自动将其转换回日期时间,因为您的变量是日期时间。

DECLARE @Date_From VARCHAR(10); 
DECLARE @Date_To VARCHAR(10); 
+0

&%* @(%@)@@%我问一个愚蠢的问题...感谢Norlando 我只是改变了日期时间为varchar(10)修复它 这样的:DECLARE @Date_From VARCHAR (10); – Worgon

+0

@LiangCk,没有问题,我只是一直犯下一个简单的错误。 – norlando