declare @begin datetime,@end datetime set @begin='2017-01-01' set @end='2019-03-04' declare @months int set @months=DATEDIFF(month,@begin,@end) select convert(varchar(7),DATEADD(month,number,@begin) ,120) AS 月份 from master.dbo.spt_values where type='p' AND number<=@months
查詢2017-01-01到2019-03-04之間所有的月份
說明:
master.spt_values相當於一個數字輔助表,在sql中主要用到number這個字段
該表是從sybase繼承過來的,是個內部字典表,供SQL Server內部使用。
我們可以在許多系統存儲過程和函數的源代碼中發現它的身影。其實可以將它理解成我們編程時常用的數據字典.
列名分別為名稱、值、類型、下限、上限、狀態;
類型列的取值含義:
D=Database Option P=Projection DBR=Database Role DC=Database Replication I=Index L=Locks V=Device Type
因為比較多,無法一一列舉。其中類型P較為特殊,它只是0-2047(與版本有關)之間的數字的簡單列表,作為對所有類型之間關系的預測。
參考:http://blog.csdn.net/whaxrl/article/details/50789894
