从dateTime类型数据中获取季度:
select cast(datepart(q,sign_date) as varchar(2))+'季度'
一.sql server日期时间函数
1. 当前系统日期、时间
select getdate()
2. dateadd 在向指定日期加上一段时间的基础上,返回新的 datetime 值
例如:向日期加上2天
select dateadd(day,2,'2004-10-15') --返回:2004-10-17 00:00:00.000
3. datediff 返回跨两个指定日期的日期和时间边界数。
select datediff(day,'2004-09-01','2004-09-18') --返回:17
4. datepart 返回代表指定日期的指定日期部分的整数。
SELECT DATEPART(month, '2004-10-15') --返回 10
5. datename 返回代表指定日期的指定日期部分的字符串
SELECT datename(weekday, '2004-10-15') --返回:星期五
6. day(), month(),year() --可以与datepart对照一下
select 当前日期=convert(varchar(10),getdate(),120)
,当前时间=convert(varchar(8),getdate(),114) ......
我想面试过软件开发的朋友都会碰到sql方面的面试题,这个可以说是面试必考的。这里拿几个例子开拓一下思路。
1.
有这样一张表
教师号
星期
是否有课
1
1
有
2
3
有
1
2
有
1
2
有
要得出这样的数据:
姓名
星期一
星期二
星期三
星期四
星期五
1
1
2
Null
Null
Null
2
Null
Null
1
Null
Null
不用管具体的表结构,我们看看如何得到这样的结果:
首先我们通过sql创建一张表,然后插入数据:
create table Course
(
TeacherId int,
Week int,
HasCourse varchar(2)
)
insert into Course values('1','1','有')
我们分析发现,在得到的数据中,星期一这样的字段在原表中是不存在的,所以如何产生这些字段是关键所在,估计这个很多初学者也比较少用,但是却很有用.另外一点就是对于没有课的要显示为空,而不是0.
好了,我们看一下如何统计查询:
select distinct TeacherId as 教师号,
星期一=(select case count(*) when 0 then null else count(*) end from Course where TeacherId=b.TeacherId and Week='1'),
星期二=(se ......
解压 SQLServer2005SP3-KB955706-x86-CHS.exe 文件(使用 WinRAR 可直接解压,或使用 /extract)
解压后文件夹 搜索 “*.msi *.msp” ,然后复制所有搜索到的文件 放到 D:\SQL2005\SP3 中.
提取 cs_sql_dev_all_dvd.iso(SQL Server 2005 开发版) 中的 x86 版本,放到 D:\SQL2005\MSSQL 中;此时 D:\SQL2005\MSSQL 中应该有以下文件和文件夹 autorun.inf,Servers,Tools。
然后把以下代码存为D:\SQL2005\Install.cmd,并双击运行。
----------------------------------------------------------------------------------------------------
@ECHO OFF
ECHO /////////////////////////////////////////////////
ECHO // Microsoft SQL Server 2005 整合、集成SP3
ECHO // Author : 柳永法
ECHO // Date : 2008-12-19
ECHO // Modi : 2008-12-22
ECHO // Version : 1.1
ECHO // Web : http://www.yongfa365.com/
ECHO // URL : http://www.yongfa365.com/Item/Microsoft-SQL-Server-2005-With-SP3.html
ECHO ////////////////////////////////////////// ......
using (LongXingDBDataContext db = new LongXingDBDataContext())
{
DeviceInfo di;
di = new DeviceInfo();
var a = db.ExecuteQuery<DateTime>("select getdate()",new object[] {});
di.CreateDate = a.First();
  ......
SQL数据库不同备份名称存放不同路径还原方法 收藏
/*------------------------------------------------------------------
-- Author : htl258(Tony)
-- Date : 2010-04-15 22:07:01
-- Version: Microsoft SQL Server 2008 (RTM) - 10.0.1600.22 (Intel X86)
Jul 9 2008 14:43:34
Copyright (c) 1988-2008 Microsoft Corporation
Developer Edition on Windows NT 5.1 (Build 2600: Service Pack 3)
-- Subject: SQL备份还原实例(还原时备份文件路径与备份时不同可用此方法)
------------------------------------------------------------------*/
--备份
BACKUP DATABASE mydb
TO DISK='c:\olddb.bak'
WITH INIT
--为了测试,把备份好的文件从C盘移动到D:\tempdb 文件夹
--还原
--1.用此语句得到备份文件的逻辑文件名:
RESTORE FILELISTONLY from DISK = N'd:\tempdb\olddb.bak' --备份文件存放路径
--看LogicalName,一般会有两个文件,如:
--olddb --主逻辑文件名称
--olddb_log --日志逻辑文件名称
--2.用以下语句还原数据库
RESTORE DATABASE new_db
from DISK = 'd:\tempdb\olddb.bak'
WITH MOV ......
讲解SQL Server数据库被挂马的解决方案
http://www.cnhacker.com/Security/Plan/200808/t20080822_6383.html
案例:一个网站遭遇入侵,破坏相当严重,SQL数据库被挂马,所有的表里面大部分字段都被多次重复插入挂马代码,查看日志,还好没有涉及到服务器的安全,只是数据库那里出现了很多异常警告而已,网站确实存在漏洞
没有办法,我只得修复数据库,因为他们没有数据库备份,根本就没有办法还原数据库啊,何况连事务日志都没有开启,试着恢复了几次都不成功,恢复数据库没有一点希望,我只得乖乖的帮他们清理挂马代码,不可能手工删除挂马代码,毕竟数据太大了,不可能去直接修改,通过四处搜寻得到了一个勉强有效的解决办法,每个表里面去执行一下这个sql语句:
update tablename set @ziduanming =replace(cast(@ziduanming as varchar(8000)),’ ’,null)
上面的sql语句可以对应修改表,字段名,和替换内容。
其实,sql数据库挂马是一种较新的挂马方法,只要网站存在注入,并且连接数据库是db owner权限就可以进行数据库挂马,估计这次攻击的流程应该是自动化的,通过先进的扫描技术批量收集到几万网站的SQL注入漏洞,针对漏洞攻击,进行自动化的SQL注入 ......