---上个月月初第一天
select CONVERT(varchar(12) , DATEADD(mm,DATEDIFF(mm,0,dateadd(mm,-1,getdate())),0), 112 )
---上个月月末最后一天
select CONVERT(varchar(12),dateadd(ms,-3,DATEADD(mm,DATEDIFF(m,0,getdate()),0)), 112 )
--1. 显示本月第一天
SELECT DATEADD(mm,DATEDIFF(mm,0,getdate()),0)
select convert(datetime,convert(varchar(8),getdate(),120)+'01',120)
--2. 显示本月最后一天
select dateadd(day,-1,convert(datetime,convert(varchar(8),dateadd(month,1,getdate()),120)+'01',120))
SELECT dateadd(ms,-3,DATEADD(mm,DATEDIFF(m,0,getdate())+1,0))
--3. 上个月的最后一天
SELECT dateadd(ms,-3,DATEADD(mm,DATEDIFF(mm,0,getdate()),0))
--4. 本月的第一个星期一
select DATEADD(wk,DATEDIFF(wk,0, dateadd(dd,6-datepart(day,getdate()),getdate())),0)
--5. 本年的第一天
SELECT DATEADD(yy,DATEDIFF(yy,0,getdate()),0)
--6. 本年的最后一天
SELECT dateadd(ms,-3,DATEADD(yy,DATEDIFF(yy,0,getdate())+1,0))
--7. 去年的最后一天
SELECT dateadd(ms,-3,DATEADD(yy,DATEDIFF(yy,0,getdate()),0))
--8. 本季度的第一天
SELECT DATEADD(qq,DATEDIFF(qq,0,getdate()),0)
--9. 本周的星期一
SELECT DATEADD(wk,DATEDIFF(wk,0,getdate()),0)
--10. 查询本月的记录
select * from tableName where DATEPART(mm, theDate)=DATEPART(mm, GETDATE()) and DATEPART(yy, theDate) = DATEPART(yy, GETDATE())
--11. 查询本周的记录
select * from tableName where DATEPART(wk, theDate) = DATEPART(wk, GETDATE()) and DATEPART(yy, theDate) = DATEPART(yy, GETDATE())
--12 查询本季的记录 注:其中:GETDATE() 是获得系统时间的函数。
select * from tableName where DATEPART(qq, theDate) = DATEPART(qq, GETDATE()) and DATEPART(yy, theDate) = DATEPART(yy, GETDATE())
--13. 获取当月总天数:
select DATEDIFF(dd,getdate(),DATEADD(mm, 1, getdate()))
select datediff(day,dateadd(mm, datediff(mm,'',getdate()), ''),dateadd(mm, datediff(mm,'',getdate()), '1900-02-01'))
--14. 获取当前为星期几
SELECT DATENAME(weekday, getdate())
select CONVERT(varchar(12) , getdate(), 101 ) --12/28/2007
select CONVERT(varchar(12) , getdate(), 102 ) --2007.12.28
select CONVERT(varchar(12) , getdate(), 103 ) --28/12/2007
select CONVERT(varchar(12) , getdate(), 104 ) --28.12.2007
select CONVERT(varchar(12) , getdate(), 105 ) --28-12-2007
select CONVERT(varchar(12) , getdate(), 106 ) --28 12 2007
select CONVERT(varchar(12) , getdate(), 107 ) --12 28, 2007
select CONVERT(varchar(12) , getdate(), 108 ) --10:06:33
select CONVERT(varchar(12) , getdate(), 109 ) --12 28 2007 1
select CONVERT(varchar(12) , getdate(), 110 ) --12-28-2007
select CONVERT(varchar(12) , getdate(), 111 ) --2007/12/28
select CONVERT(varchar(12) , getdate(), 112 ) --20071228
select CONVERT(varchar(12) , getdate(), 113 ) --28 12 2007 1
select CONVERT(varchar(12) , getdate(), 114 ) --10:07:36:623
select CONVERT(varchar, getdate(), 120 ) --2007-12-28 10:08:56
select CONVERT(varchar(10), getdate(), 120 ) --2007-12-28
select replace(replace(replace(CONVERT(varchar, getdate(), 120 ),'-',''),' ',''),':','') --20071228101012 \
前天:Select dateadd(day,-2,getdate())
明天 :Select dateadd(day,1,getdate())
规则如下:
1 101 美国 mm/dd/yyyy
2 102 ANSI yy.mm.dd
3 103 英国/法国 dd/mm/yy
4 104 德国 dd.mm.yy
5 105 意大利 dd-mm-yy
6 106 - dd mon yy
7 107 - mon dd, yy
8 108 - hh:mm:ss
- 9 或 109 (*) 默认值 + 毫秒 mon dd yyyy hh:mi:ss:mmmAM(或 PM)
10 110 美国 mm-dd-yy
11 111 日本 yy/mm/dd
12 112 ISO yymmdd
- 13 或 113 (*) 欧洲默认值 + 毫秒 dd mon yyyy hh:mm:ss:mmm(24h)
14 114 - hh:mi:ss:mmm(24h)
- 20 或 120 (*) ODBC 规范 yyyy-mm-dd hh:mm:ss[.fff]
- 21 或 121 (*) ODBC 规范(带毫秒) yyyy-mm-dd hh:mm:ss[.fff]
- 126(***) ISO8601 yyyy-mm-dd Thh:mm:ss:mmm(不含空格)
- 130* 科威特 dd mon yyyy hh:mi:ss:mmmAM
- 131* 科威特 dd/mm/yy hh:mi:ss:mmmAM
关于Emaker中字段的格式转换和字段间的运算代码可以加到属性里的“格式转换(读出)”和“格式转换(写入)”,table字段设定里的“字段”位置也可以灵活加函数。比如:'AF'+ID 或者ID+'/'+PWD ,convert(varchar(50),F1) ,
convert(int,%)-19110000 (读出)
convert(char(8),convert(int,%)+19110000) (写入)
实现行的合计运算等等。加入:%系统变量%,则是调用在Emaker 系统中设定的系统变量。
获取两个日期相差的天数:
select datediff(d,'2012-05-10','2012-05-12')
两个字段拼接:
SELECT CAST(LastCargoNo AS VARCHAR(10))+'、'+ CAST(LastCargoName AS VARCHAR(10)) FROM Cargo
SQLServer 获取当前月份的总天数 逐过程 一看就明白 分类: SQL Server2009-12-10 15:36393人阅读 评论(0) 举报--查询当前月份的天数
--思路当前月份+1,就是下个月,然后用下个月的1号减一,就得到当前月份的最后一天,这样就知道当前月份有多少天了
--用到的函数 getdate()当前的日期 dateadd() 在年月日中进行加减操作 year()日期中的年部分 month()日期中的月部分 datepart()取出日期中的某部分
--第一步将当前期日的月部分加一
select dateadd(mm,1,getdate())
--第二步获取加一后的日期的年和月
select 年=year(dateadd(mm,1,getdate())),月=month(dateadd(mm,1,getdate()))
--第三步拼接成当前月的下一个月的1号
select convert(varchar(4),year(dateadd(mm,1,getdate())))+'-'+convert(varchar(2),month(dateadd(mm,1,getdate())))+'-01'
--第四步转成日期类型的
select 当前月的下一个月的1号=convert(datetime,convert(varchar(4),year(dateadd(mm,1,getdate())))+'-'+convert(varchar(2),month(dateadd(mm,1,getdate())))+'-01')
--第五步把上面得到的日期减一天得到当前月的最后一天
select 当前月的最后一天=dateadd(dd,-1,convert(datetime,convert(varchar(4),year(dateadd(mm,1,getdate())))+'-'+convert(varchar(2),month(dateadd(mm,1,getdate())))+'-01'))
--最后一步拿到天数
select 当前月份总天数=datepart(dd,dateadd(dd,-1,convert(datetime,convert(varchar(4),year(dateadd(mm,1,getdate())))+'-'+convert(varchar(2),month(dateadd(mm,1,getdate())))+'-01')))