posts - 48,comments - 29,trackbacks - 0
六、Sybase预定义函数
1.聚集函数
sum([all|distinct]表达式)
avg([all|distinct]表达式)
count([all|distinct]表达式)
count(*)
max(表达式)
min(表达式)
2.字符串函数
upper(字符表达式)
lower(字符表达式)
char(整型表达式)
char_length(字符表达式)
ltrim(字符表达式)
rtrim(字符表达式)
……
3.数学函数
abs(精确小数型表达式)
floor(精确小数型表达式)求小于或等于给定表达式值的最大整数(取底)
rand([整数型]
round(精确小数型表达式,整数)
sign(精确小数型表达式)
power(精确小数型表达式,整数幂)
……
4.日期函数
getdate()
datepart(日期部分,日期)
datediff(日期部分,日期1,日期2)
dateadd(日期部分,数值表达式,日期)
5.类型转换函数
convert(数据类型,表达式[,格式])
6.系统函数
db_name([数据库ID])
host_name()
isnull(表达式1,表达式2)
posted on 2006-11-23 10:39 风筝 阅读(5582) 评论(3)  编辑 收藏 引用 所属分类: 技术点滴

FeedBack:
# 关于datediff的一点详细使用说明
2006-11-23 10:50 | 风筝
DateDiff 函数
返回一个 Long 值,该值指定两个 Date 值之间的时间间隔数。

Public Overloads Function DateDiff( _
ByVal Interval As DateInterval, _
ByVal Date1 As DateTime, _
ByVal Date2 As DateTime, _
Optional ByVal DayOfWeek As FirstDayOfWeek = FirstDayOfWeek.Sunday, _
Optional ByVal WeekOfYear As FirstWeekOfYear = FirstWeekOfYear.Jan1 _
) As Long
- 或 -

Public Overloads Function DateDiff( _
ByVal Interval As String, _
ByVal Date1 As Object, _
ByVal Date2 As Object, _
Optional ByVal DayOfWeek As FirstDayOfWeek = FirstDayOfWeek.Sunday, _
Optional ByVal WeekOfYear As FirstWeekOfYear = FirstWeekOfYear.Jan1 _
) As Long
参数
Interval
必选项。DateInterval 枚举值或 String 表达式,表示要用作 Date1 和 Date2 之间差额单位的时间间隔。
Date1、Date2
必选。数据类型为 Date。想用于计算的两个日期/时间值。差额为 Date2 的值减去 Date1 的值。调用程序中的两个值都未更改。
DayOfWeek
可选项。选自 FirstDayOfWeek 枚举的值,该枚举用于指定周的第一天。若未指定,则使用 FirstDayOfWeek.Sunday。
WeekOfYear
可选项。选自 FirstWeekOfYear 枚举的值,该枚举用于指定年的第一周。若未指定,则使用 FirstWeekOfYear.Jan1。
设置
Interval 参数可以有以下设置。

枚举值 字符串 时间差额的单位
DateInterval.Day d 日
DateInterval.DayOfYear y 日
DateInterval.Hour h 小时
DateInterval.Minute n 分钟
DateInterval.Month m 月
DateInterval.Quarter q 季度
DateInterval.Second s 秒钟
DateInterval.Weekday w 周
DateInterval.WeekOfYear ww 日历周
DateInterval.Year yyyy 年

DayOfWeek 参数可以有以下设置之一。

枚举值 值 说明
FirstDayOfWeek.System 0 系统设置中指定的周的第一天
FirstDayOfWeek.Sunday 1 星期日(默认)
FirstDayOfWeek.Monday 2 星期一(依照 ISO 8601 标准第 3.17 节)
FirstDayOfWeek.Tuesday 3 星期二
FirstDayOfWeek.Wednesday 4 星期三
FirstDayOfWeek.Thursday 5 星期四
FirstDayOfWeek.Friday 6 星期五
FirstDayOfWeek.Saturday 7 星期六

WeekOfYear 参数可以有以下设置。

枚举值 值 说明
FirstWeekOfYear.System 0 系统设置中指定的年的第一周
FirstWeekOfYear.Jan1 1 1 月 1 日所在的周(默认)
FirstWeekOfYear.FirstFourDays 2 至少有四天属于新年的周(依照 ISO 8601 标准第 3.17 节)
FirstWeekOfYear.FirstFullWeek 3 新年的第一个全周

异常/错误
异常类型 错误号 条件
ArgumentException 5 无效 Interval。
ArgumentException 5 Date 或 DayofWeek 超出范围。
InvalidCastException 13 Date1 或 Date2 为无效类型。

备注
可以使用 DateDiff 函数来确定两个日期/时间值之间存在多少指定时间间隔。例如,可以使用 DateDiff 来计算两个日期之间相隔几日,或计算从今天起到年底相隔几周。

若 DateInterval.DayOfYear 设置了 Interval,则对其的处理和 DateInterval.Day 一样,因为 DayOfYear 作为时间间隔单位是没有意义的。

若 Interval 被设置为 DateInterval.WeekOfYear,则返回值表示包含 Date1 的周的第一天与包含 Date2 的周的第一天相隔的周数。以下的示例显示了这样所产生的结果与 DateInterval.Weekday 所产生的结果的不同之处。

Dim DatTim1 As Date = #1/4/2001# ' This is a Thursday.
Dim DatTim2 As Date = #1/9/2001# ' This is the next Tuesday.
' Assume Sunday is specified as first day of the week.
Dim WD As Long = DateDiff(DateInterval.Weekday, DatTim1, DatTim2)
Dim WY As Long = DateDiff(DateInterval.WeekOfYear, DatTim1, DatTim2)
在上述示例中,DateDiff 为 WD 返回 0,因为两日期之间的差额小于七天,而它为 WY 返回 1,因为两个日历周各自的第一天之间相差七天。

若 Interval 被设置为 DateInterval.Year,则返回值只从 Date1 和 Date2 的年份部分算起。

因为 Date1 和 Date2 的数据类型为 Date,所以它们所容纳系统计时器上日期和时间值精确到 100 毫微秒。可是,DateDiff 总是将时间间隔数返回成 Long 数据类型值。

若 Date1 表示的日期和时间比 Date2 的晚,则 DateDiff 返回负数。

如果有任何参数的值无效,就会发生 ArgumentException 错误。若 Date1 或 Date2 参数的值无法转换为有效 Date 值,则发生 InvalidCastException 错误。

注意 将 12 月 31 日与来年的 1 月 1 日比较时,即便只过去一天,DateDiff 给 DateInterval.Year、DateInterval.Quarter 或 DateInterval.Month 都返回 1。
因为每个 Date 值都由 DateTime 结构支持,所以其方法在查找时间间隔中提供了附加选项。例如,可以在它两个重载窗体的任一个内使用 Subtract 方法。一个窗体将 Date 变量减去 TimeSpan 后返回另一 Date 值;另一个则减去 Date 值后返回 TimeSpan。可以给过程计时,以确定它所花的毫秒数,如下所示:

Dim StartTime As Date = Now ' Starting date/time.
' Run the process that is to be timed.
Dim RunLength As System.TimeSpan = Now.Subtract(StartTime)
Dim Millisecs As Integer = RunLength.Milliseconds
示例
本示例使用 DateDiff 函数显示给定日期和今天的间隔天数。

Dim FirstDate, Msg As String ' Declare variables.
Dim SecondDate As Date
FirstDate = InputBox("Enter a date")
SecondDate = CDate(FirstDate)
Msg = "Days from today: " & DateDiff(DateInterval.Day, Now, SecondDate)
MsgBox (Msg)
  回复  更多评论
  
# dateadd明细
2006-11-23 11:13 | 风筝
DateAdd 函数
返回一个 Date 值,其中包含已添加指定时间间隔的日期和时间值。

Public Overloads Function DateAdd( _
ByVal Interval As DateInterval, _
ByVal Number As Double, _
ByVal DateValue As DateTime _
) As DateTime
- 或 -

Public Overloads Function DateAdd( _
ByVal Interval As String, _
ByVal Number As Double, _
ByVal DateValue As Object _
) As DateTime
参数
Interval
必选项。表示所要添加时间间隔的 DateInterval 枚举值或 String 表达式。
Number
必选。数据类型为 Double。表示所要添加间隔数目的浮点表达式。Number 可以是正数(获取将来的日期/时间值)也可以是负数(获取过去的日期/时间值)。Interval 指定小时、分钟或秒时可以包含小数部分。对于 Interval 的其他值,Number 的小数部分应忽略。
DateValue
必选。数据类型为 Date。表示间隔所应添加到的日期和时间的表达式。DateValue 本身在调用程序中不做更改。
设置
Interval 参数可以有以下设置。

枚举值 字符串 待添加时间间隔的单位
DateInterval.Day d 天;截断为整数值
DateInterval.DayOfYear y 天;截断为整数值
DateInterval.Hour h 小时;四舍五入到毫秒
DateInterval.Minute n 分钟;四舍五入到毫秒
DateInterval.Month m 月份;截断为整数值
DateInterval.Quarter q 季度;截断为整数值
DateInterval.Second s 秒;四舍五入到微秒
DateInterval.Weekday w 天;截断为整数值
DateInterval.WeekOfYear ww 周;截断为整数值
DateInterval.Year yyyy 年;截断为整数值
  回复  更多评论
  
# 处理时间的绝佳函数
2007-03-16 10:38 | 风筝
--字符串时间


select getdate() -- '03/11/12'
select convert(char,getdate(),101) -- '09/27/2003'
select convert(char,getdate(),102) -- '2003.11.12'
select convert(char,getdate(),103) -- '27/09/2003'
select convert(char,getdate(),104) -- '27.09.2003'
select convert(char,getdate(),105) -- '27-09-2003'
select convert(char,getdate(),106) -- '27 Sep 2003'
select convert(char,getdate(),107) --'Sep 27, 2003'
select convert(char,getdate(),108) --'11:16:06'
select convert(char,getdate(),109) --'Sep 27 2003 11:16:28:746AM'
select convert(char,getdate(),110) --'09-27-2003'
select convert(char,getdate(),111) --'2003/09/27'
select convert(char,getdate(),112) --'20030927'
select rtrim(convert(char,getdate(),102))+' '+(convert(char,getdate(),108)) -- '2003.11.12 11:03:41'



--整数时间


select convert(int,convert(char(10),getdate(),112)) -- 20031112
select datepart(hh,getdate())*10000 + datepart(mi,getdate())*100 + datepart(ss,getdate()) -- 110646



--时间格式 "YYYY.MM.DD HH:MI:SS" 转换为 "YYYYMMDDHHMISS"


declare @a datetime,@tmp varchar(20),@tmp1 varchar(20)
select @a=convert(datetime,'2004.08.03 12:12:12')
select @tmp=convert(char(10),@a,112)
select @tmp
select @tmp1=convert(char(10),datepart(hh,@a)*10000 + datepart(mi,@a)*100 + datepart(ss,@a))
select @tmp1
select @tmp=@tmp+@tmp1
select @tmp




--当月最后一天


declare
@tmpstr varchar(10)
@mm int,
@premm int,
@curmmlastday varchar(10)
begin
select @mm=datepart(month,getdate())--当月
select @premm=datepart(month,dateadd(month,-1,getdate())) --上个月
if (@mm>=1 and @mm<=8)
select @tmpstr=convert(char(4),datepart(year,getdate()))+'.0'+convert(char(1),datepart(month,dateadd(month,1,getdate())))+'.'+'01'
else if (@mm>=9 and @mm<=11)
select @tmpstr=convert(char(4),datepart(year,getdate()))+'.'+convert(char(2),datepart(month,dateadd(month,1,getdate())))+'.'+'01'
else
select @tmpstr=convert(char(4),datepart(year,dateadd(year,1,getdate())))+'.0'+convert(char(1),datepart(month,dateadd(month,1,getdate())))+'.'+'01'
select @curmmlastday=convert(char(10),dateadd(day,-1,@tmpstr),102) --当月最后一天
end




—————————————————————————————————

因为要转换数据库的时间格式,在网上找了好久,很感谢作者,也顺便贴出来希望可以给其他人带来一些方便。
  回复  更多评论
  
只有注册用户登录后才能发表评论。