string st = '01/2012' (MM/yyyy)
我想01/01/2012和31/01/2012如何用SQL創建開始日期和結束日期?
之間獲取數據如何按照年份和月份格式創建的開始日期和結束日期?
對於實例
st = 02/2012
Select * from table where dates between 01/02/2012 and 29/02/2012
如何使加入該月的開始和結束日期的查詢?
string st = '01/2012' (MM/yyyy)
我想01/01/2012和31/01/2012如何用SQL創建開始日期和結束日期?
之間獲取數據如何按照年份和月份格式創建的開始日期和結束日期?
對於實例
st = 02/2012
Select * from table where dates between 01/02/2012 and 29/02/2012
如何使加入該月的開始和結束日期的查詢?
下應該給你當月的最後一天的SQL服務器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))
這應該做你想做的。不知道這是否是最簡單的方法。 @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
它不會返回行'fldDate'是例如2012-01-31 08:23(st ='01/2012') - 確切地說,2012-01-31 00:00:00(獨家)和2012-02-01之間不會返回任何行00:00:00 - 從月份的最後一天開始的記錄。 – 2012-01-10 07:23:13
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
這對我的作品在DB2
select (current date+1 month)-day(current date+1 month) days from sysibm.sysdummy1;
編輯: 當前日期功能,讓你今天爲止,你可以用你輸入的日期替換此。
嘗試:
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
(如果創建)。
這是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
根據您的日期格式,玩弄這spesifies日期格式的101。 (通常,這是101或103,其給出了MM/DD/YYY或DD/MM /年)
SELECT *
FROM table
WHERE MONTH(dates) = 2
AND YEAR(dates) = 2012
什麼數據類型** **是您的柱'dates'在SQL Server表??? – 2012-01-10 05:52:38
另外:當使用字符串指定日期時,我會建議**總是**使用ISO-8601格式:'YYYYMMDD'(或者'YYYY-MM-DDTHH:MM:SS'隨着時間的推移) - 這將適用於任何語言/區域設置爲您的SQL Server - 其他任何依賴於這些設置和*可能會中斷*如果這些設置是錯誤的...... – 2012-01-10 06:15:28