我正在使用MS SQL 2005,我想检查两个日期是否相等,但忽略了时间部分.
我知道我可以使用DATEDIFF,但我担心它可能会很慢 - 这个SP在DB中被大量使用!
有什么建议?
编辑:大卫安德烈斯的评论:
"比较"不仅包括"平等"让我意识到我没有让我的问题足够清楚 - 我实际上只是在检查是否平等,就是这样.
使用T-SQL,我将如何获取varchar列的最后3个字符?
所以列文本是IDS_ENUM_Change_262147_190我需要的190
我已经在SQL Server 2005中有一个函数:
ALTER function [dbo].[fCalculateEstimateDate] (@vWorkOrderID numeric)
Returns varchar(100) AS
Begin
<Function Body>
End
Run Code Online (Sandbox Code Playgroud)
我想修改此函数以接受另外的可选参数@ToDate.我将在函数中添加逻辑,如果@Todate提供,那么继续使用现有代码执行其他操作.
我将功能修改为:
ALTER function [dbo].[fCalculateEstimateDate] (@vWorkOrderID numeric,@ToDate DateTime=null)
Returns varchar(100) AS
Begin
<Function Body>
End
Run Code Online (Sandbox Code Playgroud)
现在我可以调用函数:
SELECT dbo.fCalculateEstimateDate(647,GETDATE())
Run Code Online (Sandbox Code Playgroud)
但它在跟随电话时出错:
SELECT dbo.fCalculateEstimateDate(647)
Run Code Online (Sandbox Code Playgroud)
如
为程序或函数dbo.fCalculateEstimateDate提供的参数数量不足.
根据我的理解不应该发生.
我错过了什么吗?提前致谢.
我有一个带有"DEFAULT"约束的列.我想创建一个删除该列的脚本.
问题是它返回此错误:
Msg 5074, Level 16, State 1, Line 1
The object 'DF__PeriodSce__IsClo__4BCC3ABA' is dependent on column 'IsClosed'.
Msg 4922, Level 16, State 9, Line 1
ALTER TABLE DROP COLUMN IsClosed failed because one or more objects access this column.
Run Code Online (Sandbox Code Playgroud)
我找不到一种简单的方法来删除一个列及其所有相关的约束(只发现了查看系统表的大脚本......必须(!!)这是一个"好"的方法.)
由于DEFAULT约束的名称是随机生成的,我不能按名称删除它.
更新:
约束类型为"DEFAULT".
我看到了你们提出的解决方案,但我发现它们都非常"脏"......你不觉得吗?我不知道它是用于Oracle还是MySQL,但它可以做类似的事情:
DROP COLUMN xxx CASCADE CONSTRAINTS
Run Code Online (Sandbox Code Playgroud)
它会丢弃所有相关的约束......或者至少它会自动删除映射到该列的约束(至少CHECK约束!)
在MSSQL中没有类似的东西吗?
我试图VARBINARY(MAX)使用SQL确定SQL Server 2005中字段中内容的大小.我怀疑是否有本机支持,可以使用CLR集成吗?任何想法将不胜感激.
当我不小心点击Database Diagrams选项卡时,我收到以下错误之一:
无法安装数据库关系图支持对象,因为此数据库没有有效的所有者.要继续,首先使用"数据库属性"对话框的"文件"页面或ALTER AUTHORIZATION语句将数据库所有者设置为有效登录,然后添加数据库关系图支持对象.
- - 要么 - -
数据库没有使用数据库图表所需的一个或多个支持对象.你想创造它们吗?
将此数据库的所有者更改为"sa"的语法是什么?
我有两个SQL Server(都是2005版).
我想将几个表从一个表迁移到另一个表.
我试过了:
在源服务器上,我右键单击了所选的数据库Tasks/Generate scripts.问题是Table/View options没有Script data选择.
然后我用来Script Table As/Create script生成SQL文件,以便在我的目标服务器上创建表.但我仍然需要所有的数据.
然后我尝试使用:
SELECT *
INTO [destination server].[destination database].[dbo].[destination table]
FROM [source server].[source database].[dbo].[source table]
Run Code Online (Sandbox Code Playgroud)
但我得到错误:
对象包含的前缀数量超过最大数量.最大值为2.
有人可以指出我解决问题的正确方法吗?
我在SQL 7天后就知道了一些性能原因,但SQL Server 2005中是否仍然存在相同的问题?如果我在存储过程中有一个我想单独操作的结果集,那么游标仍然是一个糟糕的选择吗?如果是这样,为什么?