选择 dateadd(s, -1, dateadd(month, datediff(month, 0, getdate())+1,0))
当我执行此查询时,它给出了“2012-01-30 23:59:59.000”。我不知道如何将其设为“2012-01-30 23:59:59.997”。如果有人知道,请说。
感谢您!!!
取以下代码:
Declare @a integer
set @a = 0
set @a = @a | cast (1 as BINARy)
set @a = @a | cast (100 as BINARy)
select cast (@a as integer)
Run Code Online (Sandbox Code Playgroud)
现在,这段代码的输出不应该是 5 吗?
我有一个整数,将它设置为 0,所以在二进制中它全是 0
然后我OR用 1 ,所以它变成 0..001
然后我OR用 100 二进制,所以它应该变成 00..0101,十进制是 5
我实际得到的输出是 101
编辑:为了更清楚,我试图用 TSQL 完成以下代码在 C++ 中的作用
#include<stdio.h>
#include<iostream>
using namespace std;
int main()
{
int a;
a = 0;
a = a | 1;
cout<< a;
a = a …Run Code Online (Sandbox Code Playgroud) 我正在研究小模块,在该模块中我们将列名作为逗号分隔的字符串传递给存储过程。在存储过程中,我们希望将列名分开。
我有一个类似于以下的查询:
SELECT id FROM MyTable
WHERE eventCount > eventCutoff * eventFactor
Run Code Online (Sandbox Code Playgroud)
eventCount和eventCutoff被定义为 smallint 和eventFactor浮点数。
我有两个问题:是否有一个隐式eventCount转换为浮点数进行比较?如果是这样,这会阻止我有效地利用 上的索引eventCount吗?
有什么办法来设置timeoffset一个中datetimeoffset柱直接,而不必使用SWITCHOFFSET其改变的日期呢?
在下面的帖子中,我们可以看到SWITCHOFFSET将相应地更改日期以及设置时间偏移(这不是我们想要的):http :
//blog.sqlauthority.com/2010/07/15/sql-server-datetime-功能开关偏移示例/
例如,我的日期值为“2013-02-10”,并希望将其记录在不同的时区,而不会丢失“2013-02-10”。只需将 timeoffset 设置为需要的值,例如:+11、-4、-6 等。
是否可以?
谢谢。
有时我的存储过程看起来像
create procedure handle_data
@fk int,
@value varchar(10)
as
begin
if exists (select * from my_table where id = @fk)
begin
update my_table
set value = @value
where id = @fk
end
else
begin
insert into my_table (fk, value)
select @fk, @value
end
end
Run Code Online (Sandbox Code Playgroud)
调用此存储过程的应用程序设计可能存在错误。
我应该避免制作执行相同存储过程和方法来插入新数据并更新旧数据的应用程序吗?
有没有更好的方法来以一种方法实现更新或插入数据?
我正在使用 SQL Server 2005 / 2008。
有没有什么好方法可以避免isnull()在存储过程中多次编写函数?
我有一个使用该isnull()函数近 30 次的存储过程,我认为我缺少一个概念,但是在找到更好的方法来获取我的数据之前,我会喜欢从这么多isnull()函数中清理我的代码。
我可以暂时将 SQL Server 2008 R2 设置为使用空值作为浮点 0 吗?isnull()如果没有数据,我的大部分内容只是添加零 0 值,以便我可以进行数学运算。
编辑:我不是懒惰,我只是想清理我的代码并避免选择部分看起来像这样
select
vrsta.NAZIV
,isnull(sum(prod.prod_mpci),0) as prod_MPCI
,isnull(sum(isnull(mal_MPCI,0) + (vel_kol * isnull(mal_MPC,vel_VPC))),0) as lager_mpci
,isnull(sum(vel_NCI),0)+isnulL(sum(mal_NCI),0) as lager_nci
,sum( case
when isnull(vel_KOL,0)+isnull(mal_KOL,0) > isnull(prod.prod_kol,0) and isnull(dzn.dzn,'2010-01-01') < @dzu
then ((isnull(vel_KOL,0)+isnull(mal_KOL,0))-isnull(prod.prod_kol,0)) * isnull(mal_MPC,vel_VPC)
else 0 end
) as visak_MPC
,sum( case
when isnull(vel_KOL,0)+isnull(mal_KOL,0) > isnull(prod.prod_kol,0) and isnull(dzn.dzn,'2010-01-01') < @dzu
then ((isnull(vel_KOL,0)+isnull(mal_KOL,0))-isnull(prod.prod_kol,0)) * isnull(mal_NC,vel_NC)
else 0 end
) as visak_MPC
,sum( case …Run Code Online (Sandbox Code Playgroud) 我正在尝试传递要在NOT IN操作中使用的项目数组:
ALTER FUNCTION [dbo].[fnTEST] (@CODES VARCHAR)
RETURNS TABLE
AS
RETURN
(
SELECT
T1.CODE AS 'CODE',
(SELECT COUNT(*)
FROM TABLE1 AS T2 WITH (NOLOCK)
WHERE T2.CODE NOT IN (@CODES)
) AS 'COUNT'
FROM TABLE1 T1 WITH (NOLOCK)
)
Run Code Online (Sandbox Code Playgroud)
然后我这样称呼它:
SELECT * FROM fnTEST ('500,250,202,900,204,200,300,400,600,800')
Run Code Online (Sandbox Code Playgroud)
那行不通。如果我尝试在没有引号的情况下调用它,则会收到参数过多的错误(这是预期的)。
有解决方案吗?
查询是:
Select
Case AStatus
When 1 then 'Success'
When 0 then 'Faliure'
END,
Case AStatus
When 1 then 'AStatus'
When 0 then 'AStatus'
END,
Case AStatus
When 1 then 'Expected:1'
When 0 then 'Recived: 0'
END
From Statuses
Where LocalPath= 'c:\Status'
Run Code Online (Sandbox Code Playgroud)
在 SQL Server Compact 中运行不佳的原始查询(等于上述查询)是:
Select
Case AStatus
When 1 then 'Success', 'AStatus', 'Expected:1'
When 0 then 'Faliure', 'AStatus', 'Recived: 0'
end
From Statuses
Where LocalPath= 'c:\Status
Run Code Online (Sandbox Code Playgroud) 我在 SQL Server 2008 R2 上运行这个查询:
SELECT
orr.Rate, orr.ID, orr.UserKey, fn.NetRate
FROM
OngoingRate orr
CROSS APPLY
dbo.GetRateNetView(orr.UserKey) as fn
WHERE
orr.UserKey = 5
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
'.' 附近的语法不正确。
请帮忙