⑴ 怎用sql 語句 列出 兩個日期之前的年份和月份
那就可改成這樣:
Declare @StartDate varchar(10)
Declare @EndDate varchar(10)
Set @StartDate='2000-01-01'
Set @EndDate='2003-03-02'
Create Table #YearMonth
(
YM varchar(10)
)
While @StartDate<=@EndDate
Begin
Insert Into #YearMonth(YM) Values(Left(@StartDate,7))
Set @StartDate=Convert(varchar,DATEADD(M,1,@StartDate),23)
End
Select * From #YearMonth
Drop Table #YearMonth
⑵ sql查詢問題 我想查詢兩個日期之間的數據,比如3月到4月的數據,這個sql語句該怎麼寫
最簡單的方法就是用char(4)來保存生日。
select student_name
from students
where student_birthday between '0101' and '0505'
order by student_birthday
也可以用數值型:)
select student_name
from students
where student_birthday between 101 and 505
order by student_birthday
當然也可以用日期型
⑶ sql語句如何統計出當月之前的幾個月的數據
SELECT date_format(crtime,'%Y-%m') as qq ,
sum(order_log.quan * mers.price) as profit,
count(orderid) as Quant
FROM order_log
left outer join mers
on order_log.tb_id = mers.tb_id
group by qq
舉例中 我是兩張表,一張表是銷售記錄order_log
另一張表是 商品價格mers
所以用了聯合查詢,如果你是同一張表就更簡單了 不用聯合查詢
⑷ sql兩個日期之間怎麼用函數表示
DATEDIFF
返回跨兩個指定日期的日期和時間邊界數。
語法
DATEDIFF ( datepart ,startdate ,enddate )
參數
datepart
是規定了應在日期的哪一部分計算差額的參數。下表列出了 Microsoft® SQL Server™ 識別的日期部分和縮寫。
日期部分縮寫
year yy, yyyy
quarter qq, q
Month mm, m
dayofyear dy, y
Day dd, d
Week wk, ww
Hour hh
minute mi, n
second ss, s
millisecond ms
startdate
是計算的開始日期。startdate 是返回 datetime 或 smalldatetime 值或日期格式字元串的表達式。
因為 smalldatetime 只精確到分鍾,所以當用 smalldatetime 值時,秒和毫秒總是 0。
如果您只指定年份的最後兩位數字,則小於或等於"兩位數年份截止期"配置選項的值的最後兩位數字的數字所在世紀與截止年所在世紀相同。大於該選項的值的最後兩位數字的數字所在世紀為截止年所在世紀的前一個世紀。例如,如果 two digit year cutoff 為 2049(默認),則 49 被解釋為 2049,2050 被解釋為 1950。為避免模糊,請使用四位數的年份。
有關時間值指定的更多信息,請參見時間格式。有關日期指定的更多信息,請參見 datetime 和 smalldatetime。
enddate
是計算的終止日期。enddate 是返回 datetime 或 smalldatetime 值或日期格式字元串的表達式。
返回類型
integer
注釋
startdate 是從 enddate 減去。如果 startdate 比 enddate 晚,返回負值。
當結果超出整數值范圍,DATEDIFF 產生錯誤。對於毫秒,最大數是 24 天 20 小時 31 分鍾零 23.647 秒。對於秒,最大數是 68 年。
計算跨分鍾、秒和毫秒這些邊界的方法,使得 DATEDIFF 給出的結果在全部數據類型中是一致的。結果是帶正負號的整數值,其等於跨第一個和第二個日期間的 datepart 邊界數。例如,在 1 月 4 日(星期日)和 1 月 11 日(星期日)之間的星期數是 1。
示例
此示例確定在 pubs 資料庫中標題發布日期和當前日期間的天數。
USE pubs
GO
SELECT DATEDIFF(day, pubdate, getdate()) AS no_of_days
FROM titles
GO
⑸ 在SQL語句中,定義了@mth,如何表示前一個月,是sub(@mth-1)嗎
@mth是什麼??
select dateadd(month,-1,getdate())
-----------------------------------------
@mth就是你傳進來的時間的話
那就是:
select dateadd(month,-1,@mth)
⑹ SQL查詢語句,將同一個月份里的前兩個日期分別成為一列
假設數據在vt表中, date, postdate都為datetime類型(SQL Server 2005或以上適用), 查詢結果未對日期值進行格式化, 查詢SQL如下:
selectd.monthTxt,
max(casewhend.idx=1thend.dateelsenullend)asdate1,
max(casewhend.idx=2thend.dateelsenullend)asdate2,
max(casewhend.idx=1thend.postdateelsenullend)aspostdate1,
max(casewhend.idx=2thend.postdateelsenullend)aspostdate2
from(
selects.date,s.postdate,
left(convert(nvarchar(10),s.date,120),7)asmonthTxt,
row_number()over(partitionbyleft(convert(nvarchar(10),s.date,120),7)orderbys.date)asidx
fromvts
)d
whered.idxin(1,2)
groupbyd.monthTxt
結果如下圖:
SQL說明:
left(convert(nvarchar(10), s.date, 120), 7)是獲取月份的字串, 就是上圖的monthTxt;
裡面的子查詢使用了row_number分組編號, 按月份字串進行分組, date值升序進行排序編號:
row_number()over(partitionbyleft(convert(nvarchar(10),s.date,120),7)orderbys.date)asidx;
最外面的查詢則按月份分組查詢, 獲取每月前兩個日期date, postdate值
⑺ SQL取系統時間的前一個月的月份和年份
SQL SERVER 提供了一些時間函數:
取當前時間:select getdate()
取前一個月的時間:SELECT DATEADD(MONTH,-1,GETDATE()) 月份減一個月
取年份:SELECT YEAR( DATEADD(MONTH,-1,GETDATE())),Year 取年份
取月份:SELECT MONTH( DATEADD(MONTH,-1,GETDATE())) ,month 取月份。
如上,可通過對日期函數的各種組合,來達到目標。
⑻ 如何寫SQL從一個表裡,獲取最近兩個月的數據記錄
如何寫SQL從一個表裡,獲取最近兩個月的數據記錄
一:如果要插入目標表不存在:
select * into 目標表 from 表 where ...
二:如果要插入目標表已經存在:
insert into 目的表 select * from 表 where 條件
三:如果是跨資料庫操作的話: 怎麼把A資料庫的atable表所查詢的東西,全部插入到B 資料庫的btable表中
select * into B.btable from A.atable where ...
同樣,如果是跨伺服器的,也是可以的。
⑼ sql語句中如何表示在前系統時間前2個月的那天
use POS
delete pos_sales where operdate<convert(date,str(year(getdate()),4)+'-'+str(month(getdate())-2,2)+'-'+str(day(getdate())-1,2))
把它加到SQL維護計劃裡面每天1點執行一次就OK了方便省事
⑽ sql查詢指定月份之前的幾個月
1、創建測試表,
create table test_date(id varchar2(20), v_date date);