标签: t-sql

如何以日期时间数据类型获取今天的最后日期?

选择 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”。如果有人知道,请说。

感谢您!!!

sql-server-2005 sql-server-2008 sql-server t-sql datetime

1
推荐指数
1
解决办法
1583
查看次数

TSQL 中的按位运算

取以下代码:

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)

t-sql

1
推荐指数
1
解决办法
1012
查看次数

如何拆分存储过程中的逗号分隔列表

我正在研究小模块,在该模块中我们将列名作为逗号分隔的字符串传递给存储过程。在存储过程中,我们希望将列名分开。

sql-server-2005 sql-server stored-procedures t-sql

1
推荐指数
1
解决办法
2102
查看次数

隐式转换是否会对索引使用产生负面影响?

我有一个类似于以下的查询:

SELECT id FROM MyTable
WHERE eventCount > eventCutoff * eventFactor
Run Code Online (Sandbox Code Playgroud)

eventCounteventCutoff被定义为 smallint 和eventFactor浮点数。

我有两个问题:是否有一个隐式eventCount转换为浮点数进行比较?如果是这样,这会阻止我有效地利用 上的索引eventCount吗?

t-sql sql-server-2008-r2

1
推荐指数
1
解决办法
63
查看次数

如何在不更改日期部分的情况下在 Datetimeoffset 列中设置 timeoffset

有什么办法来设置timeoffset一个中datetimeoffset柱直接,而不必使用SWITCHOFFSET改变的日期呢?

在下面的帖子中,我们可以看到SWITCHOFFSET将相应地更改日期以及设置时间偏移(这不是我们想要的):http : //blog.sqlauthority.com/2010/07/15/sql-server-datetime-功能开关偏移示例/

例如,我的日期值为“2013-02-10”,并希望将其记录在不同的时区,而不会丢失“2013-02-10”。只需将 timeoffset 设置为需要的值,例如:+11、-4、-6 等。

是否可以?

谢谢。

sql-server t-sql sql-server-2008-r2

1
推荐指数
1
解决办法
8305
查看次数

如何处理更新或插入情况

有时我的存储过程看起来像

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。

sql-server-2008 database-design insert t-sql update

1
推荐指数
1
解决办法
212
查看次数

处理这么多 isnull() 情况的更简单方法

有没有什么好方法可以避免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)

sql-server-2008 null sql-server t-sql

1
推荐指数
1
解决办法
6423
查看次数

NOT IN 用于解析 CSV

我正在尝试传递要在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)

那行不通。如果我尝试在没有引号的情况下调用它,则会收到参数过多的错误(这是预期的)。

有解决方案吗?

sql-server t-sql functions

1
推荐指数
1
解决办法
235
查看次数

如何以更优雅的方式在 SQL Server Compact 中编写此查询?

查询是:

 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)

t-sql sql-server-compact

1
推荐指数
1
解决办法
295
查看次数

在选择中包含表函数中的字段

我在 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)

我收到以下错误:

'.' 附近的语法不正确。

请帮忙

sql-server t-sql sql-server-2008-r2

1
推荐指数
1
解决办法
285
查看次数