一、常用SQL语句
SqlServer查询数据库时-日期格式
Select CONVERT(varchar(45), GETDATE(), 0): 01 18 2020 4:36PM
Select CONVERT(varchar(45), GETDATE(), 1): 01/18/20
Select CONVERT(varchar(45), GETDATE(), 2): 20.01.18
Select CONVERT(varchar(45), GETDATE(), 3): 18/01/20
Select CONVERT(varchar(45), GETDATE(), 4): 18.01.20
Select CONVERT(varchar(45), GETDATE(), 5): 18-01-20
Select CONVERT(varchar(45), GETDATE(), 6): 18 01 20
Select CONVERT(varchar(45), GETDATE(), 7): 01 18, 20
Select CONVERT(varchar(45), GETDATE(), 8): 16:38:08
Select CONVERT(varchar(45), GETDATE(), 9): 01 18 2020 4:38:17:420PM
Select CONVERT(varchar(45), GETDATE(), 10): 08-24-18
Select CONVERT(varchar(45), GETDATE(), 11): 18/08/24
Select CONVERT(varchar(45), GETDATE(), 12): 180824
Select CONVERT(varchar(45), GETDATE(), 13): 24 08 2018 08:22:46:862
Select CONVERT(varchar(45), GETDATE(), 14): 08:22:46:967
Select CONVERT(varchar(45), GETDATE(), 20): 2018-08-24 08:22:47
Select CONVERT(varchar(45), GETDATE(), 21): 2018-08-24 08:22:47.157
Select CONVERT(varchar(45), GETDATE(), 22): 08/24/18 08:22:47 AM
Select CONVERT(varchar(45), GETDATE(), 23): 2018-08-24
Select CONVERT(varchar(45), GETDATE(), 24): 08:22:47
Select CONVERT(varchar(45), GETDATE(), 25): 2018-08-24 08:22:47.350
Select CONVERT(varchar(45), GETDATE(), 100): 08 24 2018 08:22AM
Select CONVERT(varchar(45), GETDATE(), 101): 08/24/2018
Select CONVERT(varchar(45), GETDATE(), 102): 2018.08.24
Select CONVERT(varchar(45), GETDATE(), 103): 24/08/2018
Select CONVERT(varchar(45), GETDATE(), 104): 24.08.2018
Select CONVERT(varchar(45), GETDATE(), 108): 24-08-2018
Select CONVERT(varchar(45), GETDATE(), 118): 24 08 2018
Select CONVERT(varchar(45), GETDATE(), 107): 08 24, 2018
Select CONVERT(varchar(45), GETDATE(), 108): 08:22:49
Select CONVERT(varchar(45), GETDATE(), 109): 08 24 2018 08:22:49:153AM
Select CONVERT(varchar(45), GETDATE(), 110): 08-24-2018
Select CONVERT(varchar(45), GETDATE(), 111): 2018/08/24
Select CONVERT(varchar(45), GETDATE(), 112): 20180824
Select CONVERT(varchar(45), GETDATE(), 113): 24 08 2018 08:22:49:426
Select CONVERT(varchar(45), GETDATE(), 114): 08:22:47:375
Select CONVERT(varchar(45), GETDATE(), 120): 2018-08-24 08:22:47
Select CONVERT(varchar(45), GETDATE(), 121): 2018-08-24 08:22:47.655
Select CONVERT(varchar(45), GETDATE(), 126): 2018-08-24T08:22:47.125
//仅用dateadd()函数替换了原来的getdate()函数,其中getdate()获取的当前日期为2020-01-18
//这个为当前日期加上7天
Select CONVERT(Varchar(45),dateadd(day,7,getdate()),23):结果为2020-01-25
Select CONVERT(Varchar(45),dateadd(dd,7,getdate()),23):结果为2020-01-25
//当前日期加上7个月
Select CONVERT(Varchar(45),dateadd(month,7,getdate()),23):结果为2020-08-18
Select CONVERT(Varchar(45),dateadd(mm,7,getdate()),23):结果为2020-08-18
//若如上日期加上六个月,则结果为2019-02-28
//当前日期加上7年
Select CONVERT(Varchar(45),dateadd(year,7,getdate()),23):结果为2027-01-18
Select CONVERT(Varchar(45),dateadd(yy,7,getdate()),23):结果为2027-01-18
复制表结构:
SELECT * INTO T_WMS_SEND from T_SMS_SEND WHERE 1=2;
Mm:不能写成mm,否则日期报错!
小写的hh表示的是12小时制
大写的HH表示的是24小时制
查找锁死进程
select request_session_id spid,OBJECT_NAME(resource_associated_entity_id) T_tablename
from sys.dm_tran_locks where resource_type='OBJECT'
order by request_session_id;
杀死进程:
kill pid;
数据库优化:
- 查询百万级数据量表DT_ELEC_C0C_F167,总共220万条记录,查询花了5分钟。
加了索引sn_meter后,半分钟就结束了。
select top 1 balance,dt.sn,the_month,the_day,DEVICE_DATE from DT_ELEC_C0C_F167 dt where dt.sn_meter ='' and DEVICE_DATE>(select CONVERT(varchar(45), GETDATE(), 23)) order by device_date desc;
再加一个DEVICE_DATE索引:
CREATE NONCLUSTERED INDEX [dt_elec_c0c_167_ddate]
ON [dbo].[DT_ELEC_C0C_F167] (
[DEVICE_DATE] ASC
)
查询时间减半!
继续优化:将select CONVERT(varchar(45), GETDATE(), 23)变为常量。
消息记录表也加索引T_WX_SMS_RESULT。