如何使用SQL创建开始日期和结束日期?

时间:2012-01-10 04:54:16

标签: sql sql-server sql-server-2000

string st = '01/2012' (MM/yyyy)

我想获取01/01/2012和31/01/2012之间的数据

如何根据月份和年份格式创建开始日期和结束日期?

例如

st = 02/2012

Select * from table where dates between 01/02/2012 and 29/02/2012

如何查询添加月份的开始日期和结束日期?

7 个答案:

答案 0 :(得分:3)

以下内容应该为您提供sql-server-2000上当月的最后一天:

SELECT DATEADD(second,-1,DATEADD(month, DATEDIFF(month,0,GETDATE())+1,0))

要查找给定月份的月份的最后一天,请尝试:

DECLARE @thisDate DATETIME
SET @thisDate = '06/27/2011'
SELECT DATEADD(second,-1,DATEADD(month, DATEDIFF(month,0,@thisDate)+1,0))

答案 1 :(得分:2)

这应该做你想要的。不确定这是否是最简单的方法。 @Parameter是你传递的字符串。

DECLARE @Parameter VARCHAR(7)
DECLARE @DateStart DATETIME
DECLARE @DateEnd DATETIME

SET @DateStart = CAST('01/' + @Parameter AS DATETIME)
SET @DateEnd = DATEADD(DD, -1, DATEADD(MM, 1, @DateStart))

SELECT * FROM tblTable WHERE fldDate BETWEEN @DateStart AND @DateEnd

答案 2 :(得分:1)

declare @m int
set @m=2

declare @y int 
set @y=2012

declare @StartDate smalldatetime
declare @EndDate smalldatetime

set @StartDate=cast(@m as varchar(20))+'/'+'1/' +cast(@y as varchar(20)) 


print @StartDate

print datediff(day, @StartDate, dateadd(month, 1, @StartDate))

set @EndDate=cast(@m as varchar(20))+'/'+cast(datediff(day, @StartDate, dateadd(month, 1, @StartDate))as varchar(20))+'/' +cast(@y as varchar(20)) 

print @EndDate

答案 3 :(得分:1)

这适用于DB2

select (current date+1 month)-day(current date+1 month) days from sysibm.sysdummy1;

编辑: 当前日期功能为您提供今天的日期,您可以将其替换为输入日期。

答案 4 :(得分:1)

尝试:

declare @st as varchar(10)
set @st = '01/2012'

select * 
from table 
where
    dates >= convert(datetime, '01/' + @st, 103) and
    dates < dateadd(mm, 1, convert(datetime, '01/' + @st, 103))

返回指定月份的所有行(包括整个月的最后一天到午夜)。注意>=(包含)和<(不包括)标志。非常重要的是,这将使用列dates上的索引(如果已创建)。

答案 5 :(得分:1)

这适用于MS SQL:

DECLARE @datestring varchar(7) = '01/2012';
DECLARE @dateStart varchar(10) =  CONVERT(varchar(10), '01/' + @datestring, 101);
DECLARE @dateEnd varchar(10) = CONVERT(varchar(10), DATEADD(DAY, -1, DATEADD(MONTH, 1, @dateStart)), 101);

SELECT 
    *
FROM 
    [StackTestDB].[dbo].[DateTable]
WHERE
    [DateCol] >= @dateStart AND [DateCol] <=  @dateEnd

根据日期的格式,使用101表示日期格式。 (通常这是101或103,给出MM / dd / yyy或dd / MM / yyyy)

答案 6 :(得分:1)

SELECT *
FROM table
WHERE MONTH(dates) = 2
AND YEAR(dates) = 2012