MS_SQL_杂记(一)
最近一段时间项目转入SSIS,从DB2和TeraData向MSSql中迁入,其中又穿插了perl一些的知识,感觉这段时间相当的充实,以前一直关注C#,javascript,不怎么写sql,现在一天写一两千行的sql,脸不红,气不喘,一口气连上八楼都不心跳加速了.
因为一些知识只是临时性的添加,所以显得很杂乱.
(1)sql datatime 格式化
1. Select CONVERT(varchar(100), GETDATE(), 0): 05 16 2006 10:57AM
2. Select CONVERT(varchar(100), GETDATE(), 1): 05/16/06
3. Select CONVERT(varchar(100), GETDATE(), 2): 06.05.16
4. Select CONVERT(varchar(100), GETDATE(), 3): 16/05/06
5. Select CONVERT(varchar(100), GETDATE(), 4): 16.05.06
6. Select CONVERT(varchar(100), GETDATE(), 5): 16-05-06
7. Select CONVERT(varchar(100), GETDATE(), 6): 16 05 06
8. Select CONVERT(varchar(100), GETDATE(), 7): 05 16, 06
9. Select CONVERT(varchar(100), GETDATE(), 8): 10:57:46
10. Select CONVERT(varchar(100), GETDATE(), 9): 05 16 2006 10:57:46:827AM
11. Select CONVERT(varchar(100), GETDATE(), 10): 05-16-06
12. Select CONVERT(varchar(100), GETDATE(), 11): 06/05/16
13. Select CONVERT(varchar(100), GETDATE(), 12): 060516
14. Select CONVERT(varchar(100), GETDATE(), 13): 16 05 2006 10:57:46:937
15. Select CONVERT(varchar(100), GETDATE(), 14): 10:57:46:967
16. Select CONVERT(varchar(100), GETDATE(), 20): 2006-05-16 10:57:47
17. Select CONVERT(varchar(100), GETDATE(), 21): 2006-05-16 10:57:47.157
18. Select CONVERT(varchar(100), GETDATE(), 22): 05/16/06 10:57:47 AM
19. Select CONVERT(varchar(100), GETDATE(), 23): 2006-05-16
20. Select CONVERT(varchar(100), GETDATE(), 24): 10:57:47
21. Select CONVERT(varchar(100), GETDATE(), 25): 2006-05-16 10:57:47.250
22. Select CONVERT(varchar(100), GETDATE(), 100): 05 16 2006 10:57AM
23. Select CONVERT(varchar(100), GETDATE(), 101): 05/16/2006
24. Select CONVERT(varchar(100), GETDATE(), 102): 2006.05.16
25. Select CONVERT(varchar(100), GETDATE(), 103): 16/05/2006
26. Select CONVERT(varchar(100), GETDATE(), 104): 16.05.2006
27. Select CONVERT(varchar(100), GETDATE(), 105): 16-05-2006
28. Select CONVERT(varchar(100), GETDATE(), 106): 16 05 2006
29. Select CONVERT(varchar(100), GETDATE(), 107): 05 16, 2006
30. Select CONVERT(varchar(100), GETDATE(), 108): 10:57:49
31. Select CONVERT(varchar(100), GETDATE(), 109): 05 16 2006 10:57:49:437AM
32. Select CONVERT(varchar(100), GETDATE(), 110): 05-16-2006
33. Select CONVERT(varchar(100), GETDATE(), 111): 2006/05/16
34. Select CONVERT(varchar(100), GETDATE(), 112): 20060516
35. Select CONVERT(varchar(100), GETDATE(), 113): 16 05 2006 10:57:49:513
36. Select CONVERT(varchar(100), GETDATE(), 114): 10:57:49:547
37. Select CONVERT(varchar(100), GETDATE(), 120): 2006-05-16 10:57:49
38. Select CONVERT(varchar(100), GETDATE(), 121): 2006-05-16 10:57:49.700
39. Select CONVERT(varchar(100), GETDATE(), 126): 2006-05-16T10:57:49.827
40. Select CONVERT(varchar(100), GETDATE(), 130): 18 ???? ?????? 1427 10:57:49:907AM
41. Select CONVERT(varchar(100), GETDATE(), 131): 18/04/1427 10:57:49:920AM
(2) openquery的使用
OpenQuery 是SQL Server用来与其他Server交互的一种技术,通过OpenQuery,SQL Server 可以直接访问其他数据库资源。而其他数据库在OpenQuery 表达式中是以Linked Server 存在的。 使用sp_linkedservers 可以找到当前数据库的所有linked server. OpenQuery的表达式可以这么写:
Select * from OpenQuery([linkedServerName],'Select * from T_test where id > 10')
但是如果要传递参数呢?那只能老办法,将整体做成一个字符串,然后在调用存储过程了
create proc Sp_GetDb2
(
@ExecuteTime datetime = getdate()
)
as
begin
declare @ExecuteTime datetime = getdate()
declare @sqlhead varchar(2012) = ''
set @sqlhead = 'select * from openquery(db2_test,''select * from t_test where ctime > '
+ Convert(varchar(10),@ExecuteTime,112)+ ''')'
exec(@sqlhead)
end
(3)跨数据库联合更新问题
- 原文作者:大鱼
- 原文链接:https://brucedone.com/archives/279/
- 版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议. 进行许可,非商业转载请注明出处(作者,原文链接),商业转载请联系作者获得授权。