用途:前系统日期、时间
举例:select getdate()
Dateadd函数:
用途:在向指定日期加上一段时间的基础上,返回新的 datetime值:
举例:向日期加上2天,select dateadd(day,2,'2011-01-15') --返回:2011-01-17 00:00:00.000
Datediff函数:
用途:返回跨两个指定日期的日期和时间边界数:
举例:select datediff(day,'2008-08-01','2008-08-18') --返回:17
Datename函数:
用途: 返回代表指定日期的指定日期部分的字符串:
举例: select datename(weekday, '2011-01-27') --返回:星期四
Datepart函数:
用途: 返回代表指定日期的指定日期部分的整数:
举例: select datepart(month, '2011-01-15') --返回 1
6.day(),month,year()—这个可以跟datepart对照一下
select当前日期=convert(varchar(10),getdate(),120),
当前时间=convert(varchar(8),getdate(),114)
select datename(dw,’2011-01-27)
select本年第多少周=datename(week,’2011-01-27’),
今天是周几=datename(weekday,’2011-01-27)
*注释:
这里整理了一些SQLserver里面可能经常会用到的日期格式转换方法:
1.Select convert(varchar, getdate(), 120 )
2011-01-27 18:22:22
2.Select convert(varchar(12) , getdate(), 111 )
2011/01/27
3.select convert(varchar(12) , getdate(), 112 )
20110127
4.select convert(varchar(12) , getdate(), 102 )
2011.01.27
5.select convert(varchar(12) , getdate(), 101 )
27/01/2011
6.select convert(varchar(12) , getdate(), 103 )
01/27/2011
7.select convert(varchar(12) , getdate(), 104 )
01.27.2011
8.select convert(varchar(12) , getdate(), 105 )
01-27-2011
9.select convert(varchar(12) , getdate(), 106 )
01 27 2011
10.select convert(varchar(12) , getdate(), 107 )
27 01, 2011
11.select convert(varchar(12) , getdate(), 108 )
18:22:22
以上这些都是一些常用的日期格式转换。
在日常的工作中,我们常常会遇到这样一些问题:当空值“NULL”与非空值相加后,得到的确实空值,而不是我们想要的答案。
例如:1
last_name |
first_name |
a |
null |
根据上表,如果select last_name+first_name from table1
那么我们得到的值一定是一个NULL值,而不是我们想要的“a”。
2
last_name |
first_name |
a |
而这个表中,如果 select last_name+first_name from table1
当表没有值的时候就可以得到我们想要的结果“a”
综上所述:
非Null+Null=Null
非Null+””=非Null
在SQLserver中,如果直接使一个空值与字符串相加,即NULL+‘’的结果也会是NULL值,有两种方法使产生的结果为字符串:
使用:字段名=isnull(字段值,’’)+insull(串联的字符串,’’)
设置 CONCAT_NULL_YIELDS_NULL值
当SET CONCAT_NULL_YIELDS_NULL为ON时,串联空值与字符串将产生NULL结果。例如,SELECT’abc’+NULL将生产NULL。当SET CONCAT_NULL_YIELDS_NULL为OFF时,串联空值与字符串将产生字符串本身(空值作为空字符串处理)。例如 SELECT’abc’+NULL将生成abc。
将字符串字段的缺省值设为“”
SD022