一.时间类型的自动转换函数
CONVERT(varchar(12),getdate(),112 )
原文地址http://penpy.blog.163.com/blog/static/132546191201151011458482/
一.SQL获取时间方法:
- getdate() 获取当前系统日期、时间
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
返回代表指定日期的指定日期部分的字符串
本年第多少周=datename(week,getdate())
今天是周几=datename(weekday,getdate())
select datename(dw,‘2004-10-15‘)
SELECT datename(weekday, ‘2004-10-15‘) --返回:星期五
6. day(), month(),year() --可以与datepart对照一下
函数 |
功能 |
GetDate( ) |
返回系统目前的日期与时间 |
DateDiff (interval,date1,date2) |
以interval 指定的方式,返回date2 与date1两个日期之间的差值 date2-date1 |
DateAdd (interval,number,date) |
以interval指定的方式,加上number之后的日期 |
DatePart (interval,date) |
返回日期date中,interval指定部分所对应的整数值 |
DateName (interval,date) |
返回日期date中,interval指定部分所对应的字符串名称 |
其中,参数 interval的值设定如下
参数值 |
含义 |
Year|yy|yyyy |
获取年份 |
Quarter|Qq|q |
Quarter获取季节 |
Month|Mm|m |
月份1 ~ 12 |
Day of year|Dy |y |
一年的日数,一年中的第几日 1-366 |
Weekday|dw|w |
一周的日数,一周中的第几日 1-7 |
Hour Hh h |
时0 ~ 23 |
Minute|mi|n |
分钟 0~59 |
Second Ss s |
秒 0 ~ 59 |
Millisecond Ms |
毫秒 0 ~ 999 |
access 和 asp 中用date()和now()取得系统日期时间
其中DateDiff,DateAdd,DatePart也同是能用于Access和asp中,这些函数的用法也类似
举例:
1. GetDate() 用于sql server
select GetDate()
2. DateDiff(‘s‘,‘2005-07-20‘,‘2005-7-25 22:56:32‘)返回值为 514592 秒
DateDiff(‘d‘,‘2005-07-20‘,‘2005-7-25 22:56:32‘)返回值为 5 天
3. DatePart(‘w‘,‘2005-7-25 22:56:32‘)返回值为 2 即星期一 DatePart(‘d‘,‘2005-7-25 22:56:32‘)返回值为 25即25号
DatePart(‘y‘,‘2005-7-25 22:56:32‘)返回值为 206即这一年中第206天
DatePart(‘yyyy‘,‘2005-7-25 22:56:32‘)返回值为 2005即2005年
实例
1.编写函数,实现按照‘年月日,星期几,上午下午晚上‘输出时间信息(2009年3月16日星期一下午)
select datename(yy,getdate()) + ‘年‘ +
datename(mm,getdate()) + ‘月‘ +
datename(dd,getdate()) + ‘日‘ +
datename(weekday,getdate()) +
case when datename(hh,getdate()) < 12 then ‘上午‘ else ‘下午‘ end
2..编写函数,根据输入时间。输出该天是该年的第几天
select datepart(dy,getdate())
3.求出随机输出字符‘a-z
select char(97+abs(checksum(newid()))%26)
select char(97+rand()*26)
二.日期格式化处理
将sql server中table表的[datetime]字段值‘2007-11-07 16:41:35.033’
转化为指定的格式
convert(varchar(12),getdate(),参数值)
101 |
09/12/2004 |
102 |
2004.09.12 |
103 |
12/09/2004 |
104 |
12.09.2004 |
105 |
12-09-2004 |
106 |
12 09 2004 |
107 |
09 12, 2004 |
108 |
11:06:08 |
109 |
09 12 2004 1 |
110 |
09-12-2004 |
112 |
20040912 |
113 |
12 09 2004 1 |
114 |
11:06:08.177 |
120 |
2007-11-07 00:00:00 |
当前日期=convert(varchar(10),getdate(),120)
当前时间=convert(varchar(8),getdate(),114)