小编Cad*_*oux的帖子

SQL Server中的自定义日期/时间格式

我正在尝试编写一个存储过程,从表中选择列,并向ResultSet添加2个额外的列.这两个额外的列是表中字段转换的结果,该字段是Datetime字段.

日期时间格式字段具有以下格式'YYYY-MM-DD HH:MM:SS.S'

另外两个字段应采用以下格式:

  1. DDMMM
  2. HHMMT,其中T为'A'表示am,'P'表示pm

示例:如果字段中的数据为"2008-10-12 13:19:12.0",则提取的字段应包含:

  1. 12OCT
  2. 0119P

我尝试过使用CONVERT字符串格式,但没有一种格式符合我想要的输出.我正在考虑通过CONVERT提取字段数据然后使用REPLACE,但我肯定需要一些帮助,因为我不确定.

任何精通存储过程的人都可以帮助我吗?谢谢!

sql sql-server datetime stored-procedures sql-convert

12
推荐指数
4
解决办法
10万
查看次数

在SQL中从另一行中减去一行数据

我已经厌倦了一些SQL,我有几行数据,我想从前一行中减去一行并让它一直重复.

所以这是表:

CREATE TABLE foo (
  id,
  length
)
INSERT INTO foo (id,length) VALUES(1,1090)
INSERT INTO foo (id,length) VALUES(2,888)
INSERT INTO foo (id,length) VALUES(3,545)
INSERT INTO foo (id,length) VALUES(4,434)
INSERT INTO foo (id,length) VALUES(5,45)

我希望结果显示第三列称为差异,这一行是从下面的一行减去,最后一行从零减去.

+------+------------------------+
| id   |length |  difference  |
+------+------------------------+
|    1 | 1090  |  202         |
|    2 |  888  |  343         |
|    3 |  545  |  111         |
|    4 |  434  |  389         |
|    5 |   45  |   45         |

我尝试过自我加入,但我不确定如何限制结果,而不是让它自行循环.我不能依赖于给定结果集的id值是顺序的,所以我没有使用那个值.我可以扩展架构以包含某种顺序值.

这就是我尝试过的: …

mysql sql join subtraction

12
推荐指数
2
解决办法
5万
查看次数

11
推荐指数
1
解决办法
3万
查看次数

COALESCE - 保证短路?

这个问题,关于使用COALESCE一个整洁的答案来简化复杂的逻辑树.我考虑过短路问题.

例如,在大多数语言的函数中,参数被完全评估,然后传递给函数.在C:

int f(float x, float y) {
    return x;
}

f(a, a / b) ; // This will result in an error if b == 0
Run Code Online (Sandbox Code Playgroud)

这似乎不是COALESCESQL Server中"功能" 的限制:

CREATE TABLE Fractions (
    Numerator float
    ,Denominator float
)

INSERT INTO Fractions VALUES (1, 1)
INSERT INTO Fractions VALUES (1, 2)
INSERT INTO Fractions VALUES (1, 3)
INSERT INTO Fractions VALUES (1, 0)
INSERT INTO Fractions VALUES (2, 0)
INSERT INTO Fractions VALUES (3, …
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server coalesce short-circuiting

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

SQL Server 2005内存压力和tempdb写入问题

我们的生产SQL Server存在一些问题.

服务器:双四核Xeon 8 GB RAM单RAID 10阵列Windows 2003 Server 64位SQL Server 2005标准64位

现在机器上有大约250MB的可用RAM.SQL Server有大约6GB的RAM,我们的监控软件说只有一半的SQL Server分配RAM实际上被使用.

我们的主数据库大约为20GB,任何频率都可以使用大约12GB.我们的tempdb是700MB.两者都位于同一物理磁盘阵列上.

此外,使用Filemon,我能够看到tempdb文件有100或1000的写入长度65536.磁盘队列长度几乎80%的时间超过100.

所以,这是我的问题 -

  1. 什么会导致tempdb上的所有写入?我不确定我们是否总是有那么多活动,但似乎过度,这些问题是最近的.

  2. 我应该只为服务器添加更多内存吗?

  3. 在高负载服务器上,tempdb和db文件应该位于不同的阵列上吗?

sql-server performance sql-server-2005 tempdb

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

如何根据事件的日期,时间和持续时间检查SQL表中的平均并发事件?

我有一组呼叫详细记录,根据这些记录,我应该确定每个系统每小时的平均并发活动呼叫数(精度为一分钟).如果我查询下午7点到晚上8点,我应该看到该小时内(每个系统)的小时平均并发呼叫(平均每分钟的并发呼叫).

所以,我需要一种方法来检查7:00-7:01,7:01-7:02等活动呼叫的数量,然后平均这些数字.如果呼叫的时间和持续时间落在正在检查的当前分钟内,则认为呼叫处于活动状态.

更难的是它需要跨越SQL 7.0和SQL 2000(2000中的某些功能在7.0中不可用,例如GetUTCTime()),如果我能让2000工作,我会很高兴.

我可以采取什么方法解决这个问题?

我考虑在被检查的小时内循环分钟(60)并添加落在该分钟之间的呼叫计数,然后以某种方式交叉引用持续时间以确保在晚上7:00开始并且持续时间为300秒在7:04显示活跃,但我无法想象如何解决问题.我试图找出一种方法来对每一次电话进行加权,特别是那一分钟会告诉我这段时间内呼叫是否有效,但无法提出有效的解决方案.

这里的数据类型与我要查询的数据类型相同.我没有对模式的任何控制(除了可能转换数据并插入具有更合适的数据类型的另一个表之外).我提供了一些我知道有并发活动调用的示例数据.

CREATE TABLE Records(
  seconds char(10),
  time char(4),
  date char(8),
  dur int,
  system int,
  port int,
)

--seconds is an stime value. It's the difference of seconds from UTC 1/1/1970 00:00:00 to the current UTC time, we use it as an identifier (like epoch).
--time is the time the call was made.
--date is the day the call was made.
--dur is the duration of the call in seconds.
--system is the system …
Run Code Online (Sandbox Code Playgroud)

sql sql-server algorithm sql-server-2000 sql-server-7

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

SQL Server:varbinary或int来存储位掩码?

使用int vs varbinary在性能或灵活性方面存储位掩码是否有任何优势.

出于我的目的,我将始终对这些位掩码进行读取(无写入或更新).

sql sql-server database-design bitmask

11
推荐指数
2
解决办法
1万
查看次数

VBScript:将带有null值的参数传递给存储过程?

在VBScript(ASP环境)中,是否可以将带有null值的参数传递给存储过程?

sql-server parameters vbscript ado

11
推荐指数
3
解决办法
2万
查看次数

SQL Server日期时间问题.美国人与英国人?

在我的测试数据库中,日期以DD/MM/YYYY格式显示.显示我的意思是当你右键单击,在Management Studio中打开表格时,返回的数据以DD/MM/YYYY格式显示.

有趣的是,当我编写T-SQL来检索记录时,我必须输入一个MM/DD/YYYY格式来获取正确的数据.无论如何我可以将它与DD/MM/YYYY格式对齐吗?

sql-server datetime sql-server-2005 date-formatting

11
推荐指数
1
解决办法
2万
查看次数

带有子查询因子的Oracle DELETE语句

尝试这样做(适用于SQL Server):

WITH X AS (), Y AS (), Z AS ()
DELETE FROM TBL
WHERE TBL.ID IN (SELECT ID FROM Z);
Run Code Online (Sandbox Code Playgroud)

这适用于Oracle:

WITH X AS (), Y AS (), Z AS ()
SELECT * FROM TBL
WHERE TBL.ID IN (SELECT ID FROM Z);
Run Code Online (Sandbox Code Playgroud)

但DELETE不会:ORA-00928:缺少SELECT关键字

我的子查询相当大,是否有不同的语法来使其工作?

oracle oracle10g subquery-factoring ora-00928

11
推荐指数
2
解决办法
2万
查看次数