惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
AI
AI
L
LINUX DO - 最新话题
The Register - Security
The Register - Security
T
Threatpost
Y
Y Combinator Blog
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
Attack and Defense Labs
Attack and Defense Labs
T
Tailwind CSS Blog
P
Proofpoint News Feed
MongoDB | Blog
MongoDB | Blog
H
Heimdal Security Blog
小众软件
小众软件
D
Docker
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
T
The Exploit Database - CXSecurity.com
AWS News Blog
AWS News Blog
腾讯CDC
博客园 - 司徒正美
美团技术团队
L
LINUX DO - 热门话题
N
Netflix TechBlog - Medium
Stack Overflow Blog
Stack Overflow Blog
S
Security Affairs
阮一峰的网络日志
阮一峰的网络日志
爱范儿
爱范儿
N
News and Events Feed by Topic
J
Java Code Geeks
F
Fortinet All Blogs
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
U
Unit 42
V2EX - 技术
V2EX - 技术
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
T
Tor Project blog
H
Help Net Security
The GitHub Blog
The GitHub Blog
L
Lohrmann on Cybersecurity
Hugging Face - Blog
Hugging Face - Blog
S
Securelist
PCI Perspectives
PCI Perspectives
W
WeLiveSecurity
A
About on SuperTechFans
N
News and Events Feed by Topic
博客园 - 叶小钗
Cloudbric
Cloudbric
L
LangChain Blog
WordPress大学
WordPress大学
B
Blog
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed

博客园 - 谢堂文(Darren Xie)

Camstar MES 5.8 發現Ajax事件失效 验证(C#和正则表达式) 新MES已上線 Microsoft.ACE.OLEDB.12.0' provider is not registered on the local machine Microsoft SQL Server Reporting Services (SSRS)报表技巧之在图表中增加参考线 MS SQL,数据库增长时众多表中谁是你关注的目标 SQL调优日记之发挥SQL性能与你的写法有关--对比三种方式实现相同功能 想个法子找出性能差的SQL 从MS SQL删除大数据说开去 一步一步用C#写一个检查SQL Server假死警报服务 MM的Windows 7 登录密码忘记之后 基于工作实际需求的Ext.Net和C#搭配应用之一 取出网域(AD)中所有计算机名及位置描述等信息 MS SQL自定义字符串拆分函数的惨痛经历 2012,我的C#全能Excel操作(无需Office,不使用XML) 代码注释规范 2012年开发者该做的11件事 取出AD中一個組的所有成員信息(C#實現功能配合EXT做的界面) 一個文件文件和路徑的類 C#路径/文件/目录/I/O常见操作汇总
T-SQL 日期处理总结
谢堂文(Darren Xie) · 2012-04-03 · via 博客园 - 谢堂文(Darren Xie)

明天放假,今天刚好整理一下,对于日期的格式、推算、运算是平时常用的,简单易错。

1. T-SQL 日期格式转换

由原始的值2012-04-03 10:57:06.127转换成以下20种常用的格式

2012-04-03
20120403
2012.04.03
04/03/2012
03/04/2012
03.04.2012
03-04-2012
03 Apr 2012
Apr 03, 2012
10:57:06
Apr  3 2012
04-03-2012
2012/04/03
20120403
03 Apr 2012
10:57:06:127
2012-4-3
2012年04月03日
2012年4月3日
2012-04-03 10:57:06:127

代码:

   1:  --由2012-04-03 10:23:10.177转换成2012-04-03 
   2:  SELECT GETDATE() AS Val,Convert(char(11),GETDATE(),120) AS NeedVal 
   3:   
   4:  --由2012-04-03 10:23:10.177转换成20120403 
   5:  select GETDATE() AS Val,CONVERT(varchar(12) , getdate(), 112 ) AS NeedVal 
   6:   
   7:  --由2012-04-03 10:23:10.177转换成2012.04.03 
   8:  select GETDATE() AS Val,CONVERT(varchar(12) , getdate(), 102 ) AS NeedVal 
   9:   
  10:  --由2012-04-03 10:23:10.177转换成04/03/2012 月日年
  11:  select GETDATE() AS Val,CONVERT(varchar(12) , getdate(), 101 ) AS NeedVal 
  12:   
  13:  --由2012-04-03 10:23:10.177转换成03/04/2012 日月年
  14:  select GETDATE() AS Val,CONVERT(varchar(12) , getdate(), 103 ) AS NeedVal 
  15:   
  16:  --由2012-04-03 10:23:10.177转换成03.04.2012 日月年
  17:  select GETDATE() AS Val,CONVERT(varchar(12) , getdate(), 104 ) AS NeedVal 
  18:   
  19:  --由2012-04-03 10:23:10.177转换成03-04-2012 日月年
  20:  select GETDATE() AS Val,CONVERT(varchar(12) , getdate(), 105 ) AS NeedVal 
  21:   
  22:  --由2012-04-03 10:23:10.177转换成03 Apr 2012 日月年
  23:  select GETDATE() AS Val,CONVERT(varchar(12) , getdate(), 106 ) AS NeedVal 
  24:   
  25:  --由2012-04-03 10:23:10.177转换成Apr 03, 2012
  26:  select GETDATE() AS Val,CONVERT(varchar(12) , getdate(), 107 ) AS NeedVal 
  27:   
  28:  --由2012-04-03 10:23:10.177转换成10:44:02
  29:  select GETDATE() AS Val,CONVERT(varchar(12) , getdate(), 108 ) AS NeedVal 
  30:   
  31:  --由2012-04-03 10:23:10.177转换成Apr  3 2012 
  32:  select GETDATE() AS Val,CONVERT(varchar(12) , getdate(), 109 ) AS NeedVal 
  33:   
  34:  --由2012-04-03 10:23:10.177转换成04-03-2012
  35:  select GETDATE() AS Val,CONVERT(varchar(12) , getdate(), 110 ) AS NeedVal 
  36:   
  37:  --由2012-04-03 10:23:10.177转换成2012/04/03
  38:  select GETDATE() AS Val,CONVERT(varchar(12) , getdate(), 111 ) AS NeedVal 
  39:   
  40:  --由2012-04-03 10:23:10.177转换成20120403
  41:  select GETDATE() AS Val,CONVERT(varchar(12) , getdate(), 112 ) AS NeedVal 
  42:   
  43:  --由2012-04-03 10:23:10.177转换成03 Apr 2012 
  44:  select GETDATE() AS Val,CONVERT(varchar(12) , getdate(), 113 ) AS NeedVal 
  45:   
  46:  --由2012-04-03 10:23:10.177转换成10:45:45:447
  47:  select GETDATE() AS Val,CONVERT(varchar(12) , getdate(), 114 ) AS NeedVal 
  48:   
  49:  --由2012-04-03 10:23:10.177转换成2012-4-3
  50:  SELECT GETDATE() AS Val,REPLACE(CONVERT(varchar(10),GETDATE(),120),N'-0','-') AS NeedVal 
  51:   
  52:  --由2012-04-03 10:23:10.177转换成2012年04月03日
  53:  SELECT GETDATE() AS Val,STUFF(STUFF(CONVERT(char(8),GETDATE(),112),5,0,N'年'),8,0,N'月')+N'日' AS NeedVal 
  54:   
  55:  --由2012-04-03 10:23:10.177转换成2012年4月3日
  56:  SELECT  GETDATE() AS Val,DATENAME(Year,GETDATE())+N'年'+CAST(DATEPART(Month,GETDATE()) AS varchar)+N'月'+DATENAME(Day,GETDATE())+N'日' AS NeedVal 
  57:   
  58:  --由2012-04-03 10:23:10.177转换成2012-04-03 10:23:10.177
  59:  SELECT GETDATE() AS Val,CONVERT(char(11),GETDATE(),120)+CONVERT(char(12),GETDATE(),114) AS NeedVal 

2. T-SQL 日期推算

给定日期,得到该年的第一天和最后一天

给定日期所在季度的第一天和最后一天

给定日期所在月份的第一天或最后一天

给定日期所在周的取星期几的日期,星期天做为一周的第1天

昨天
前天
明天
后天
上一年

下一年

上季度

下季度
上月

下月  
上周

下周

前一小时

后一小时

前一分钟

后一分钟

前一秒

后一秒

代码:

   1:  --给定日期,得到该年的第一天和最后一天
   2:  SELECT CONVERT(char(5),GETDATE(),120)+'1-1' AS FDATE,CONVERT(char(5),GETDATE(),120)+'12-31' LDTAE
   3:   
   4:  --给定日期所在季度的第一天和最后一天,两种方法算最后一天
   5:  SELECT CONVERT(datetime,CONVERT(char(8),DATEADD(Month,DATEPART(Quarter,GETDATE())*3-Month(GETDATE())-2,GETDATE()),120)+'1') AS FDATE
   6:      ,CONVERT(datetime,CONVERT(char(8),DATEADD(Month,DATEPART(Quarter,GETDATE())*3-Month(GETDATE()),GETDATE()),120)
   7:          +CASE WHEN DATEPART(Quarter,GETDATE()) in(1,4)
   8:              THEN '31'ELSE '30' END) AS LDATE
   9:              
  10:              
  11:  SELECT CONVERT(datetime,CONVERT(char(8),DATEADD(Month,DATEPART(Quarter,GETDATE())*3-Month(GETDATE())-2,GETDATE()),120)+'1') AS FDATE
  12:      ,DATEADD(Day,-1,CONVERT(char(8),DATEADD(Month,1+DATEPART(Quarter,GETDATE())*3-Month(GETDATE()),GETDATE()),120)+'1') AS LDATE
  13:   
  14:  --给定日期所在月份的第一天和最后一天
  15:  SELECT CONVERT(datetime,CONVERT(char(8),GETDATE(),120)+'1') AS FDATE,DATEADD(Day,-1,CONVERT(char(8),DATEADD(Month,1,GETDATE()),120)+'1') AS LDATE
  16:   
  17:  --给定日期所在周的取星期几的日期,星期天做为一周的第1天
  18:  SELECT DATEADD(Day,0-(DATEPART(Weekday,GETDATE())+@@DATEFIRST-1)%7,GETDATE())
  19:  SELECT DATEADD(Day,1-(DATEPART(Weekday,GETDATE())+@@DATEFIRST-1)%7,GETDATE())
  20:  SELECT DATEADD(Day,2-(DATEPART(Weekday,GETDATE())+@@DATEFIRST-1)%7,GETDATE())
  21:  SELECT DATEADD(Day,3-(DATEPART(Weekday,GETDATE())+@@DATEFIRST-1)%7,GETDATE())
  22:  SELECT DATEADD(Day,4-(DATEPART(Weekday,GETDATE())+@@DATEFIRST-1)%7,GETDATE())
  23:  SELECT DATEADD(Day,5-(DATEPART(Weekday,GETDATE())+@@DATEFIRST-1)%7,GETDATE())
  24:  SELECT DATEADD(Day,6-(DATEPART(Weekday,GETDATE())+@@DATEFIRST-1)%7,GETDATE())
  25:   
  26:  --昨天
  27:  SELECT DATEADD(Day,-1,GETDATE())
  28:  --前天
  29:  SELECT DATEADD(Day,-2,GETDATE())
  30:  --明天
  31:  SELECT DATEADD(Day,1,GETDATE())
  32:  --后天
  33:  SELECT DATEADD(Day,2,GETDATE())
  34:   
  35:  --上一年
  36:  SELECT DATEADD(year,-1,GETDATE())
  37:   
  38:  --下一年
  39:  SELECT DATEADD(year,1,GETDATE())
  40:   
  41:  --上季度
  42:  SELECT DATEADD(quarter,-1,GETDATE())
  43:   
  44:  --下季度
  45:  SELECT DATEADD(quarter,1,GETDATE())
  46:   
  47:   --上月
  48:  SELECT DATEADD(month,-1,GETDATE())
  49:   
  50:  --下月
  51:  SELECT DATEADD(month,1,GETDATE())
  52:    
  53:   --上周
  54:  SELECT DATEADD(week,-1,GETDATE())
  55:   
  56:  --下周
  57:  SELECT DATEADD(week,1,GETDATE())
  58:   
  59:   --前一小时
  60:  SELECT DATEADD(hour ,-1,GETDATE())
  61:   
  62:  --后一小时
  63:  SELECT DATEADD(hour ,1,GETDATE())
  64:   
  65:   --前一分钟
  66:  SELECT DATEADD(minute,-1,GETDATE())
  67:   
  68:  --后一分钟
  69:  SELECT DATEADD(minute,1,GETDATE())
  70:   
  71:   --前一秒
  72:  SELECT DATEADD(second ,-1,GETDATE())
  73:   
  74:  --后一秒
  75:  SELECT DATEADD(second ,1,GETDATE())

3. T-SQL日期运算

SELECT DATEDIFF(year, '2012-04-03', '2013-04-03'); --两日期差异年的运算
SELECT DATEDIFF(quarter, '2012-04-03', '2013-04-03'); --两日期差异季度的运算
SELECT DATEDIFF(day, '2012-04-03', '2013-04-03'); --两日期差异日的运算
SELECT DATEDIFF(week, '2012-04-03', '2013-04-03'); --两日期差异周的运算
SELECT DATEDIFF(hour, '2012-04-03', '2013-04-03'); --两日期差异小时的运算
SELECT DATEDIFF(minute, '2012-04-03', '2013-04-03'); --两日期差异分钟的运算
SELECT DATEDIFF(second, '2012-04-03', '2013-04-03'); --两日期差异秒的运算