在SQL Server中,如何将DATETIME"置于"第二/分钟/小时/日/年?
假设我的日期是2008-09-17 12:56:53.430,那么地板的输出应该是:
什么是系统表master..spt_values的目的是什么?
为什么提供它以及如何使用它?
它的类型,低值,高值的含义是什么?
更新:
Google搜索提供了数千个"其用途",例如:
一些帖子警告它的使用,因为它可以在SQL Server的未来版本中删除,但已经有代码脚本使用它来说明新SQL Server 11(Denali)的新功能:
可能重复:
SQL Server的隐藏功能
我已经作为.NET开发人员工作了一段时间,但现在主要针对SQL Server数据库3年多了.我觉得从开发的角度来看,我对SQL Server的掌握相当不错,但我很惭愧地承认我今天刚刚从这个答案中学到了"WITH TIES" - 与大多数朋友一起排名前五.
在SO上看到这样的问题和答案是令人羞愧的,因为它帮助我意识到我真的不知道我认为我做的多少,并帮助重新激发我的意志,以便了解更多,所以我想到了更好的方式而不是请大量专家对其他方便的命令/功能进行输入.
普通开发人员可能没有意识到的最有用的功能/命令是什么?
顺便说一句 - 如果你像我一样并且不知道"WITH TIES"是什么,这里有一个很好的解释.你会很快看到为什么我感到惭愧我不知道它.我可以看到它在哪里有用.- http://harriyott.com/2007/06/with-ties-sql-server-tip.aspx
我意识到这是一个主观问题所以请在关闭之前至少留出几个答案.:)我会尝试编辑我的问题以跟上您的回复列表.谢谢
[编辑] - 以下是回复摘要请向下滚动以获取更多信息.再次感谢guy/gals.
我喜欢sql server中隐藏功能的答案和问题
您能告诉我们有关Oracle的信息吗?
隐藏的表,...的内部工作,秘密存储过程,具有良好工具的包...
每当我在SQL Server中恢复数据库的备份时,都会出现以下错误:
Msg 3101, Level 16, State 1, Line 1
Exclusive access could not be obtained because the database is in use.
Msg 3013, Level 16, State 1, Line 1
RESTORE DATABASE is terminating abnormally.
Run Code Online (Sandbox Code Playgroud)
通常为了解决这个问题,我只需重启服务器即可.当我们在开发机器上的本地实例上进行开发时,这很好.但是我们有一些程序员需要访问数据库,让每个人编写脚本更改并将其放入Subversion的后勤工作正成为一场噩梦.无论我们的简单解决方案是将它放在办公室的共享服务器上,偶尔备份服务器以防万一有人搞砸了数据.
好吧,我搞砸了数据并需要恢复.不幸的是,我在办公室有另一个同事,正在开发另一个项目并使用相同的数据库服务器进行开发.为了好,我想恢复而不重新启动SQL Server并可能破坏他的工作.
有没有办法在T-SQL中编写脚本以便能够进行独占访问或删除所有连接?
将问题的答案分解为"将一列拆分为多行",我在此重新编写为[1].
什么是(含义)Type = 'P'以及为什么使用未记录的master..spt_values来拆分列?它有什么好处?
[1]
CREATE TABLE dbo.Table1
(
Col1 CHAR(1),
Col2 CHAR(1),
Col3 CHAR(1),
Col4 VARCHAR(50)
)
GO
INSERT INTO dbo.Table1 VALUES ('A','B','C','1,2,3')
GO
INSERT INTO dbo.Table1 VALUES ('D','E','F','6,7,8,9')
GO
SELECT
T.col1, RIGHT(LEFT(T.col4,Number-1),
CHARINDEX(',',REVERSE(LEFT(','+T.col4,Number-1))))
FROM
master..spt_values,
table1 T
WHERE
Type = 'P' AND Number BETWEEN 1 AND LEN(T.col4)+1 AND
(SUBSTRING(T.col4,Number,1) = ','
-- OR SUBSTRING(T.col4,Number,1) = '') --this does not work correctly anyway
Run Code Online (Sandbox Code Playgroud)
相关问题:
可能重复:
SQL Server的隐藏功能
什么是SQL提供的专业/微妙技术,而不是很多人知道哪些技术也削减了代码并提高了性能?
例如:我刚学会了如何在聚合函数中使用CASE语句,它完全改变了我的方法.
还有其他人吗?
更新:基本上任何供应商.但PostgreSQL如果你只想关注一个:D
我有一个情况,我有一个巨大的表,包含大量的行,看起来像(例如):
id Timestamp Value
14574499 2011-09-28 08:33:32.020 99713.3000
14574521 2011-09-28 08:33:42.203 99713.3000
14574540 2011-09-28 08:33:47.017 99713.3000
14574559 2011-09-28 08:38:53.177 99720.3100
14574578 2011-09-28 08:38:58.713 99720.3100
14574597 2011-09-28 08:39:03.590 99720.3100
14574616 2011-09-28 08:39:08.950 99720.3100
14574635 2011-09-28 08:39:13.793 99720.3100
14574654 2011-09-28 08:39:19.063 99720.3100
14574673 2011-09-28 08:39:23.780 99720.3100
14574692 2011-09-28 08:39:29.167 99758.6400
14574711 2011-09-28 08:39:33.967 99758.6400
14574730 2011-09-28 08:39:40.803 99758.6400
14574749 2011-09-28 08:39:49.297 99758.6400
Run Code Online (Sandbox Code Playgroud)
好的,所以规则是:时间戳可以是任意n秒,5s,30s,60s等,它取决于记录的年龄(存档发生).
我希望能够查询此表以根据时间戳选择每个第n行.
例如:
从mytable中选择*,其中intervalBetweenTheRows = 30s
(出于这个问题的目的,基于假设,所请求的间隔总是比数据库中的可用精度更高)
所以,每第n行根据每行之间的时间
有任何想法吗?!
卡尔
对于那些感兴趣的人来说,递归CTE实际上非常慢,我想到了一个稍微不同的方法:
SELECT TOP 500
MIN(pvh.[TimeStamp]) as [TimeStamp],
AVG(pvh.[Value]) as [Value] …Run Code Online (Sandbox Code Playgroud) 首先,根据我的经验,很多人不熟悉输出。如果是这样,此链接非常方便:SQL Server 的隐藏功能
我有以下更新声明:
UPDATE lease_deal.lease_budget
SET change_type = NULL
OUTPUT inserted.*
WHERE ISNULL(change_type, '') = ''
Run Code Online (Sandbox Code Playgroud)
虽然我认为这会为我返回更新的记录,但我收到以下错误:
消息 334,级别 16,状态 1,第 9 行 如果 DML 语句的目标表 'lease_deal.lease_budget' 包含没有 INTO 子句的 OUTPUT 子句,则该语句不能有任何已启用的触发器。
我知道我可以成功创建一个临时表并使用输出语句将更新的记录重定向到那里,但为什么我不能将它返回到 IDE?我确定(肯定)我以前能够做到这一点,但似乎无法在任何地方找到合适的例子来帮助我理解我做错了什么。当您正在更新的列上有触发器时,这根本不可能吗?