GetDate()函数使用为什么出错

zsgbox 2004-11-22 12:04:30
在我编写的一个函数中有下面二句话
......
declare @DateNow smalldatetime
set @DateNow= dbo.Getdate()
......
然后我调用这个函数时,告诉我如下错误信息
对象名 'dbo.Getdate' 无效。
请问这是为什么?
我想获取当前时间的的日期,如2004-11-21,不要后面的时分秒,诸位达人有什么好办法?我是用GetDate()获取当前时间,然后通过Year(),Month(),Day()取出年月日来,再接着成字符串再转换成SmallDateTime格式,太麻烦了,诸位达人有什么办法?
...全文
667 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
szh3210 2004-12-01
  • 打赏
  • 举报
回复
不能用
dh9450 2004-12-01
  • 打赏
  • 举报
回复
自定义函数不能用GETDATE

用户定义函数中不允许使用会对每个调用返回不同数据的内置函数。用户定义函数中不允许使用以下内置函数:

@@CONNECTIONS @@PACK_SENT GETDATE
@@CPU_BUSY @@PACKET_ERRORS GetUTCDate
@@IDLE @@TIMETICKS NEWID
@@IO_BUSY @@TOTAL_ERRORS RAND
@@MAX_CONNECTIONS @@TOTAL_READ TEXTPTR
@@PACK_RECEIVED @@TOTAL_WRITE
vinsonshen 2004-12-01
  • 打赏
  • 举报
回复
这个当初我也试了很久,后来才发现是函数内的确不能用的
vinsonshen 2004-12-01
  • 打赏
  • 举报
回复
在函数内不正确地使用了 'getdate'。

这个已经说明了,函数内用不了像getdate90这类系统函数的
zsgbox 2004-12-01
  • 打赏
  • 举报
回复
非常感谢!让大家看看,明天结帐,原来是不能用啊,嘿嘿,我在帮助里没查出来!感谢各位达人!
zzy928 2004-11-24
  • 打赏
  • 举报
回复
好长啊
看不懂,能解释清楚点吗?
Stone444 2004-11-24
  • 打赏
  • 举报
回复
declare @DateNow datetime
set @DateNow =Getdate()
沒有問題呀
重新打開查詢分析器試一下
zsgbox 2004-11-23
  • 打赏
  • 举报
回复
declare @DateNow datetime
set @DateNow =Getdate()

就是这个为@DateNow赋值,为什么在查询分析器中老编译不过,说
在函数内不正确地使用了 'getdate'。

晕死了,难道在函数中使用系统函数有问题,不可能啊,头好大啊!!
birchsilver 2004-11-23
  • 打赏
  • 举报
回复
哥们,你看看一下,你错在哪了
DECLARE @StrDate char(10)
DECLARE @CurrentDate datetime


Set @StrDate = Convert(NVARCHAR(10),GetDate(),120)
set @CurrentDate = dateadd(day,1,cast(@StrDate as smalldatetime))
liangx326 2004-11-22
  • 打赏
  • 举报
回复
1、去掉dbo就可以了
2、参考‘帮助文档’里面的convert或者cast
CSharpProgrammer 2004-11-22
  • 打赏
  • 举报
回复
Declare @DateNow NVARCHAR(10)
SET @DateNow = Convert(NVARCHAR(10),GetDate(),120)
ykily 2004-11-22
  • 打赏
  • 举报
回复
都挺对的,准备接分: )
futulove 2004-11-22
  • 打赏
  • 举报
回复
把DBO去掉
qizhanfeng 2004-11-22
  • 打赏
  • 举报
回复
select convert(smalldatetime,left(getdate(),11),120)
zsgbox 2004-11-22
  • 打赏
  • 举报
回复
还是解决不了,我把函数帖出来,简化了一下,请达人们帮一下吧,错误提示在中间,非常感谢!!!
CREATE FUNCTION GetMeetingStatus()
RETURNS
@RESULT TABLE
(
ID SMALLINT identity(1,1),
MeetingID int,
MeetingName varchar(32),
RoomStatus tinyint,
StartTime smalldatetime,
Discount decimal(4,2)
)
AS
BEGIN
DECLARE @ID int
DECLARE @MeetingRoom varchar(32)
DECLARE @RoomStatus int
DECLARE @StartTime smalldatetime
DECLARE @Discount decimal(4,2)
DECLARE @CurrentDate smalldatetime
DECLARE @StrDate nvarchar(10)

declare Cur cursor for
SELECT ID,MeetingRoom FROM MEETINGROOM
open Cur
fetch Cur into @ID,@MeetingRoom
while (@@fetch_status = 0)
begin
Set @StrDate = Convert(NVARCHAR(10),dbo.GetDate(),120)
set @CurrentDate = dateadd(day,cast(@StrDate as smalldatetime),1)
/**********************错误提示**************************
通过上面代码,我想获得一个时间段,从现在时间开始到今天结束,
我先获得一个没有时分秒的日期如2004-11-22,然后再加1,
我现在直接调用GetDate()函数,在查询分析器中执行时显示
在函数内不正确地使用了 'getdate'。我这么用dbo.getdate(),
就能编译过去,但在调用时GetDate函数还是出错,晕死了。
还有就是我用dateadd(day,cast(@StrDate as smalldatetime),1)
在编译器中执行时提示:函数 dateadd 的参数 2 的数据类型 smalldatetime 无效。
我已经转换成日期型了,为什么还不行,唉,请大家帮忙
********************************************************/
IF exists(SELECT ID FROM AlloC_MeetingRoom WHERE RoomStatus=4 and RoomCode = @ID AND @StartTime >= dbo.Getdate() AND @StartTime<@CurrentDate)
BEGIN
SELECT TOP 1 @StartTime=StartTime,@Discount=Discount FROM AlloC_MeetingRoom WHERE RoomStatus=4 and RoomCode = @ID AND @StartTime >= dbo.Getdate() AND @StartTime<@CurrentDate ORDER BY ID DESC
END
ELSE
BEGIN
SET @RoomStatus = 1
SET @StartTime = ''
SET @Discount = 0

END
END
INSERT INTO @RESULT(MeetingID,MeetingName,Roomstatus,StartTime,Discount) values(@ID,@MeetingRoom,@RoomStatus,@StartTime,@Discount)
fetch next from Cur into @ID,@MeetingRoom
end
close Cur
deallocate Cur
RETURN
END
rfq 2004-11-22
  • 打赏
  • 举报
回复
declare @DateNow smalldatetime
set @DateNow= Getdate()
print @DateNow
long0104 2004-11-22
  • 打赏
  • 举报
回复
Declare @DateNow NVARCHAR(10)
SET @DateNow = Convert(NVARCHAR(10),GetDate(),120)
print month(@dateNow)
得到的是月
davorsuker39 2004-11-22
  • 打赏
  • 举报
回复
declare @DateNow smalldatetime
set @DateNow= Getdate()
jingxijun 2004-11-22
  • 打赏
  • 举报
回复
declare @DateNow smalldatetime
set @DateNow= Getdate()

34,575

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧