sqlserver常用函数
查询所有表名
select name from sysobjects where xtype='u'
select * from sys.tables
查询数据库中所有的表名及行数
SELECT a.name, b.rows
FROM sysobjects AS a INNER JOIN sysindexes AS b ON a.id = b.id
WHERE (a.type = 'u') AND (b.indid IN (0, 1))
ORDER BY a.name,b.rows DESC
查询所有的标明及空间占用量\行数\
select
object_name(id) tablename,
8*reserved/1024 reserved,
rtrim(8*dpages)+'kb' used,
8*(reserved-dpages)/1024 unused,
8*dpages/1024-rows/1024*minlen/1024 free,
rows
from sysindexes
where indid=1
order by tablename,reserved desc
常用日期函数
日期操作
DATEDIFF(MONTH,0,GetDate()) 等价于 DATEDIFF(MONTH,'1900-01-01',GetDate())
是指当前月离1900-01-01 是多少个月
Datepart():返回代表指定日期的指定日期部分的整数
语法:Datepart(datepart,date) 返回类型:int
DateName():返回代表指定日期的指定日期部分的字符串
语法:DateName(datepart,date) 返回类型:nvarchar
日期部分 | 缩写 | 备份 |
---|---|---|
year | yy,yyyy | 年 |
quarter | qq, q | 季度 |
month | mm, m | 月 |
dayofyear | dy, y | 一年中的第几天 |
day | dd, d | 日 |
week | wk, ww | 一年中的第几周 |
weekday | dw日期部分返回对应于星期中的某天的数,例如:Sunday =1 | 星期几 |
Hour | hh | 小时 |
minute | mi, n | 分钟 |
second | ss, s | 秒 |
millisecond | ms | 毫秒 |
SELECT DATEADD(MONTH,DATEDIFF(MONTH,0,GetDate()),0) AS '所在月的第一天'
SELECT DATEADD(MONTH,DATEDIFF(MONTH,0,GetDate())+1,0) AS '下月第一天'
SELECT DATEADD(MONTH,1+DATEDIFF(MONTH,0,GetDate()),0)-1 AS '所在月的最一天'
SELECT DATEADD(DAY,-1,DATEADD(MONTH,1,DATEADD(DAY,1-DATEPART(DAY,GetDate()),GetDate()))) as '所在月的最一天 保留时间'
日期格式化
Style ID | Style 格式 |
---|---|
100 | 或者 0 mm dd yyyy hh:miAM (或者 PM) |
101 | mm/dd/yy |
102 | yy.mm.dd |
103 | dd/mm/yy |
104 | dd.mm.yy |
105 | dd-mm-yy |
106 | dd mon yy |
107 | Mon dd, yy |
108 | hh:mm:ss |
109 | 或者 9 mm dd yyyy hh:mi:ss:mmmAM(或者 PM) |
110 | mm-dd-yy |
111 | yy/mm/dd |
112 | yymmdd |
113 | 或者 13 dd mm yyyy hh:mm:ss:mmm(24h) |
114 | hh:mi:ss:mmm(24h) |
120 | 或者 20 yyyy-mm-dd hh:mi:ss(24h) |
121 | 或者 21 yyyy-mm-dd hh:mi:ss.mmm(24h) |
126 | yyyy-mm-ddThh:mm:ss.mmm(没有空格) |
130 | dd mm yyyy hh:mi:ss:mmmAM |
131 | dd/mm/yy hh:mi:ss:mmmAM |
例子:
(1)select convert(varchar(10),'2018-08-12 12:00:00',112) as date_type;
2018-08-12
(2)select convert(varchar(10),getdate(),112) as date_type;
20180813
(3)select convert(varchar(10),getdate(),120) as date_type;
2018-08-13
(4)select convert(varchar(20),getdate(),120) as date_type;