我编写了一个在日期和另一个日期之间选择数据的SQL。 基本上问题是关于我想做出一些选择的日期格式
我的coloum名称是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”我是不是很难转换它? 然后我用这样的select语句测试:
select CONVERT(VARCHAR(10),DATEADD(d,DATEDIFF(d,0,GETDATE()),0)-1,120);
输出是这样的“2011-11-06”为什么它在这里工作?
选择结果是什么==“
然后我就这个日期格式做了很多测试 我尝试直接解析date_from和Date_to
where Convert(varchar(10), Date_Tm, 120) Between '2011-04-04' And '2011-04-04'
我得到了预期的
无论如何,我想要的是通过一系列日期获取数据。我正在用这种转换方法压低我的头==“
请帮帮我。
感谢:
PS:请不要犹豫,说出我的错误。我们都从错误中吸取教训,并为我可怜的英语道歉。问候:
LiangCk
答案 0 :(得分:1)
这是因为您将两个变量声明为datetime而不是varchar(10)。 SQL会自动将其转换回日期时间,因为您的变量是datetime。
DECLARE @Date_From VARCHAR(10);
DECLARE @Date_To VARCHAR(10);