C# VS本地Sqlserver 操作笔记

 

1、如何连接本地数据库

-- string Info = @"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\PhysicalAssetDB.mdf;Integrated Security=True";
string Info = @"Server=(LocalDB)\MSSQLLocalDB;AttachDbFileName=|DataDirectory|\PhysicalAssetDB.mdf;
Integrated Security=SSPI;";
SqlConnection _myConn = new SqlConnection(Info);
_myConn.Open();

2、如何获取新插入的数据的ID

string sql += " SELECT SCOPE_IDENTITY() AS 'maxid';";//sql为原先的数据库插入语句,注意在加这个语句前不要有分号
SqlCommand mycom = null;
 if (_IsTransaction)
       mycom = new SqlCommand(sql, _myConn, _mytran);
else
       mycom = new SqlCommand(sql, _myConn);
object num = mycom.ExecuteScalar();
int insertID = (int)num;
mycom.Dispose(); mycom = null;

 3、时间戳转日期格式

SELECT DATEADD(S,1478577120,'1970-01-01 08:00:00');

 dateadd函数将某个日期加上一个特定的时间间隔值后返回datetime数据类型的值。

dateadd (datepart,numer,date数据);

numer:用于与detepart相加的值。如果指定了非整数值,则将舍弃该值的小数部分。

date数据:一个用于解析为time、date、smalldatetime、datetime、datetime2、或datetimeoffset值的表达式、列表达式、用户定义的变量或字符串文字。

datepart:时间部分。下节。

select getdate()    --输出 2013-03-09 16:03:59.293
select dateadd(YYYY,10,getdate())    --加了十年    输出2023-03-09 16:04:36.893        

4、日期格式转时间戳

SELECT DATEDIFF(S,'1970-01-01 08:00:00', '2017-03-23 09:04:48');

 datediff函数将两个特定的日期数据相减,得到的结果可以按照detepart指定的格式返回特定的数据。

datediff(datepart,startdate,enddate)

执行中将使用enddate减以startdate的值,如果startdate晚于enddate将返回负值。执行结果如果超出整数范围将提示错误。

startdate:一个可以解析为time、date、smalldate、datetime、datetime2或datetimeoffset值的表达式、列表达式、用户定义的变量或字符串文字。

enddate:一个可以解析为time、date、smalldate、datetime、datetime2或datetimeoffset值的表达式、列表达式、用户定义的变量或字符串文字。

datepart:时间部分,下节。

select datediff(YYYY,'2011-11-11','2012-12-12')    --输出1 年份相减之后的确是1
select datediff(day,'2011-11-11','2012-12-12')     --输出 397 两个日期相差的天数
select * from test where datediff(day,Rq,getdate()) = 0 --其中Rq为日期列,此行代码的意思是什么呢?getdate()减去Rq列的值为0,Rq列的值与今天相减,号数为0  

5、获取系统当前日期时间

SELECT GETDATE(),GETUTCDATE(),YEAR(GETDATE()),MONTH(GETDATE()),DAY(GETDATE());

6、获取任意时间部分DatePart

datepart( datepart , date数据 );
-- datepart:特定的要返回的数据的格式代码。
-- date数据:一个可以解析为time、date、smalldatetime、datetime、datetime2或者datetimeoffset值的表达式、列表表达式、用户定义的变量或字符串文字。

Datepart取值

Datepart部分的取值如下表所示:

说明取值
返回年度信息Year、YYYY、YY
返回月份信息Month、MM、M
返回日期信息Day、DD、D
返回周信息Week、WK、WW
返回每周星期几信息WeekDay、DW
返回季度信息Quarter、QQ、Q
返回一年中第几天的信息DayOfYear、DY、Y
返回小时信息Hour、HH
返回分钟信息Minute、MI、N
返回秒信息Second、SS、SS
返回毫秒信息MillSecond、MS

SELECT DATENAME(Quarter,GetDate()); -- 输出 2(6月)
SELECT DATEPART(Quarter,GetDate()); -- 输出 1 现在是第几季度

 7、时间格式转字符串

--Style=101时,表示日期字符串为:mm/dd/yyyy格式

SELECT CONVERT(datetime,'11/1/2003',101)
--结果:2003-11-01 00:00:00.000

SELECT CONVERT(varchar,'2003-11-01 00:00:00.000',101)
--结果:01/11/2003

下面列举下所有格式

0Feb 22 2006 4:26PM102/22/06
206.02.22322/02/06
422.02.06522-02-06
622 Feb 067Feb 22, 06
816:26:089Feb 22 2006 4:26:08:020PM
1002-22-061106/02/22
120602221322 Feb 2006 16:26:08:020
1416:26:08:037202006-02-22 16:26:08
202006-02-22 16:26:08212006-02-22 16:26:08.037
2202/22/06 4:26:08 PM232006-02-22
2416:26:08252006-02-22 16:26:08.037
100Feb 22 2006 4:26PM10102/22/2006
1022006.02.2210322/02/2006
10422.02.200610522-02-2006
10622 Feb 2006107Feb 22, 2006
10816:26:08109Feb 22 2006 4:26:08:067PM
11002-22-20061112006/02/22
1122006022211322 Feb 2006 16:26:08:067
11416:26:08:0671202006-02-22 16:26:08
1212006-02-22 16:26:08.0801262006-02-22T16:26:08.080
1272006-02-22T16:26:08.08013024 ???? 1427 4:26:08:080PM
13124/01/1427 4:26:08:080PM  

 8、获取数据分组后每组的最后一条数据

ROW_NUMBER() OVER(PARTITION BY COLUMN ORDER BY COLUMN)

row_number() OVER (PARTITION BY COL1 ORDER BY COL2) 表示根据COL1分组,在分组内部根据 COL2排序,而此函数计算的值就表示每组内部排序后的顺序编号(组内连续的唯一的)

SELECT *, Row_Number() OVER (partition by deptid ORDER BY salary desc) rank FROM employee

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值