注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

零售创新,创新那些事儿,SPSS,VBA

零售创新

 
 
 

日志

 
 
关于我

新浪微博,零售创新 研究经理,数据分析师 希望和市场研究和零售业的同事共同进步! 本博客发表的都是免费或试用的资料,如果有版权问题请发邮件wangli12a@163.com联系删除。 spss excel vba blog

网易考拉推荐

SqlServer 取时间列的日期部分  

2010-10-22 16:30:18|  分类: 电脑知识 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

SqlServer 取时间列的日期部分

 

(1)select Datename(year,GetDate())+'-'+Datename(month,GetDate())+'-'+Datename(day,GetDate())

(2)select convert(varchar(10),getdate(),120)

(3)select * from MyDsk_提醒 where year(预约时间) = '2008' and month(预约时间)='8' and Day(预约时间)='29' and 提醒人ID ='50271'

(4)select * from MyDsk_提醒 where convert(varchar(10),预约时间,120)='2008-08-29' and 提醒人ID ='50271'

取出数据库字段中DateTime列的时间部分:

cast(datepart(hh,预约时间)as varchar) --小时

cast(datepart(mi,预约时间)as varchar)--分钟

cast(datepart(ss,预约时间)as varchar)--秒

[转]SQL Server 日期和时间函数

1、常用日期方法(下面的GetDate() = '2006-11-08 13:37:56.233')

(1)DATENAME ( datepart ,date )

返回表示指定日期的指定日期部分的字符串。Datepart详见下面的列表.

SELECT DateName(day,Getdate()) –返回8

(2)DATEPART ( datepart , date )

返回表示指定日期的指定日期部分的整数。

SELECT DATEPART(year,Getdate()) –返回2006

(3)DATEADD (datepart , number, date )

返回给指定日期加上一个时间间隔后的新datetime 值。

SELECT DATEADD(week,1,GetDate()) --当前日期加一周后的日期

(4)DATEDIFF ( datepart , startdate , enddate )

返回跨两个指定日期的日期边界数和时间边界数。

SELECT DATEDIFF(month,'2006-10-11','2006-11-01') --返回1

(5)DAY ( date )

返回一个整数,表示指定日期的天datepart 部分。

SELECT day(GetDate()) –返回8

(6)GETDATE()

以datetime 值的SQL Server 2005 标准内部格式返回当前系统日期和时间。

SELECT GetDate() --返回2006-11-08 13:37:56.233

(7)MONTH ( date )

返回表示指定日期的“月”部分的整数。

SELECT MONTH(GETDATE()) --返回11

(8)YEAR ( date )

返回表示指定日期的“年”部分的整数。

SELECT YEAR(GETDATE()) --返回2006

2、取特定日期

(1)获得当前日期是星期几

SELECT DateName(weekday,Getdate()) --Wednesday

(2)计算哪一天是本周的星期一

SELECT DATEADD(week, DATEDIFF(week,'1900-01-01',getdate()), '1900-01-01') --返回2006-11-06 00:00:00.000

SELECT DATEADD(week, DATEDIFF(week,0,getdate()),0)

(3)当前季度的第一天

SELECT DATEADD(quarter, DATEDIFF(quarter,0,getdate()), 0)—返回2006-10-01 00:00:00.000

(4)如何取得某个月的天数

SELECT Day(dateadd(ms,-3,DATEADD(mm, DATEDIFF(m,0,'2006-02-03')+1,0))) —返回28

(5)一个季度多少天

declare @m tinyint,@time smalldatetime

select @m=month(getdate())
select @m=case when @m between 1 and 3 then 1
when @m between 4 and 6 then 4
when @m between 7 and 9 then 7
else 10 end

select @time=datename(year,getdate())+'-'+convert(varchar(10),@m)+'-01'
select datediff(day,@time,dateadd(mm,3,@time)) —返回92

(6)获得年月日(yyyy-MM-dd)

SELECT CONVERT(VARCHAR(10),GETDATE(),120) –返回2006-11-08

3、其它

(1)--下面的示例将日期指定为数字。

数据库引擎将0 解释为1900 年1 月1 日。

SELECT MONTH(0), DAY(0), YEAR(0) –返回1 1 1900

--下面两句是等效的
SELECT DATENAME(WEEKDAY,0)
SELECT DATENAME(WEEKDAY,'1900-01-01')

(2)SET DATEFIRST { number | @number_var }

将一周的第一天设置为从1 到7 的一个数字。

SET DATEFIRST 1 --表示一周的第一天是“星期一"
SELECT DATENAME(WEEKDAY,GETDATE()) --Wednesday
SELECT DATEPART(weekday,GETDATE()) --返回3
--查看当前设置情况
select @@DATEFIRST

(3)SET DATEFORMAT { format | @format_var }

设置用于输入datetime 或smalldatetime 数据的日期部分(月/日/年)的顺序。
...有效参数包括mdy、dmy、ymd、ydm、myd 和dym。
...该设置仅用在将字符串转换为日期值时的解释中。它不影响日期值的显示。
...SET DATEFORMAT 的设置是在执行或运行时设置,而不是在分析时设置。
...SET DATEFORMAT 将覆盖SET LANGUAGE 的隐式日期格式设置。
下面是例子:
-- Set date format to year, day, month.
SET DATEFORMAT ydm;
GO
DECLARE @datevar DATETIME;
SET @datevar = '1998/31/12';
SELECT @datevar AS DateVar;
GO
-- Set date format to year, month, day.
SET DATEFORMAT ymd;
GO
DECLARE @datevar DATETIME;
SET @datevar = '1998/12/31';
SELECT @datevar AS DateVar;

GO

(4)日期部分的列表

日期部分  
缩写

year
yy, yyyy

quarter
qq, q

month
mm, m

dayofyear
dy, y

day
dd, d

week
wk, ww

weekday
dw

hour
hh

minute
mi, n

second
ss, s

millisecond
ms

数据类型  
范围

datetime
1753 年 1 月 1 日到 9999 年 12 月 31 日

smalldatetime
1900 年 1 月 1 日到 2079 年 6 月 6 日

 

 

 

SQL时间

Select CONVERT(varchar(100), GETDATE(), 0): 05 16 2006 10:57AM
Select CONVERT(varchar(100), GETDATE(), 1): 05/16/06
Select CONVERT(varchar(100), GETDATE(), 2): 06.05.16
Select CONVERT(varchar(100), GETDATE(), 3): 16/05/06
Select CONVERT(varchar(100), GETDATE(), 4): 16.05.06
Select CONVERT(varchar(100), GETDATE(), 5): 16-05-06
Select CONVERT(varchar(100), GETDATE(), 6): 16 05 06
Select CONVERT(varchar(100), GETDATE(), 7): 05 16, 06
Select CONVERT(varchar(100), GETDATE(), 8): 10:57:46
Select CONVERT(varchar(100), GETDATE(), 9): 05 16 2006 10:57:46:827AM
Select CONVERT(varchar(100), GETDATE(), 10): 05-16-06
Select CONVERT(varchar(100), GETDATE(), 11): 06/05/16
Select CONVERT(varchar(100), GETDATE(), 12): 060516
Select CONVERT(varchar(100), GETDATE(), 13): 16 05 2006 10:57:46:937
Select CONVERT(varchar(100), GETDATE(), 14): 10:57:46:967
Select CONVERT(varchar(100), GETDATE(), 20): 2006-05-16 10:57:47
Select CONVERT(varchar(100), GETDATE(), 21): 2006-05-16 10:57:47.157
Select CONVERT(varchar(100), GETDATE(), 22): 05/16/06 10:57:47 AM
Select CONVERT(varchar(100), GETDATE(), 23): 2006-05-16
Select CONVERT(varchar(100), GETDATE(), 24): 10:57:47
Select CONVERT(varchar(100), GETDATE(), 25): 2006-05-16 10:57:47.250
Select CONVERT(varchar(100), GETDATE(), 100): 05 16 2006 10:57AM
Select CONVERT(varchar(100), GETDATE(), 101): 05/16/2006
Select CONVERT(varchar(100), GETDATE(), 102): 2006.05.16
Select CONVERT(varchar(100), GETDATE(), 103): 16/05/2006
Select CONVERT(varchar(100), GETDATE(), 104): 16.05.2006
Select CONVERT(varchar(100), GETDATE(), 105): 16-05-2006
Select CONVERT(varchar(100), GETDATE(), 106): 16 05 2006
Select CONVERT(varchar(100), GETDATE(), 107): 05 16, 2006
Select CONVERT(varchar(100), GETDATE(), 108): 10:57:49
Select CONVERT(varchar(100), GETDATE(), 109): 05 16 2006 10:57:49:437AM
Select CONVERT(varchar(100), GETDATE(), 110): 05-16-2006
Select CONVERT(varchar(100), GETDATE(), 111): 2006/05/16
Select CONVERT(varchar(100), GETDATE(), 112): 20060516
Select CONVERT(varchar(100), GETDATE(), 113): 16 05 2006 10:57:49:513
Select CONVERT(varchar(100), GETDATE(), 114): 10:57:49:547
Select CONVERT(varchar(100), GETDATE(), 120): 2006-05-16 10:57:49
Select CONVERT(varchar(100), GETDATE(), 121): 2006-05-16 10:57:49.700
Select CONVERT(varchar(100), GETDATE(), 126): 2006-05-16T10:57:49.827
Select CONVERT(varchar(100), GETDATE(), 130): 18 ???? ?????? 1427 10:57:49:907AM
Select CONVERT(varchar(100), GETDATE(), 131): 18/04/1427 10:57:49:920AM

-- 后一天
select DATEADD(day, 1, getdate())

--前一天
select DATEADD(day, -1, getdate())

--本周星期一
SELECT DATEADD(dd,(case @@datefirst when 7 then 2 else 2-@@datefirst end)-datepart(dw,getdate()),getdate())

--本周星期日
SELECT DATEADD(dd,6+(case @@datefirst when 7 then 2 else 2-@@datefirst end)-datepart(dw,getdate()),getdate())

--上周星期日
SELECT DATEADD(day,-(@@datefirst+datepart(weekday,getdate())-1)%7,getdate())

--格式化后的下周第一天
SELECT convert(char(10),(dateadd(dd,6+(case @@datefirst when 7 then 2 else 2-@@datefirst end)-datepart(dw,getdate()-1),getdate())),120)

--本月第一天
SELECT DATEADD(mm, DATEDIFF(mm,0,getdate()),  0)

--下月第一天
SELECT DATEADD(mm, DATEDIFF(mm,0,getdate())+1,  0)

--本月最后一天
SELECT DATEADD(dd, -1, DATEADD(mm, 1+ DATEDIFF(mm, 0,  getdate()), 0))

-- 本季度第一天
SELECT  DATEADD(qq, DATEDIFF(qq,0,getdate()), 0)

--本年第一天
SELECT DATEADD(yy,DATEDIFF(yy,0,getdate()),0) 

--下一年第一天
SELECT DATEADD(yy,DATEDIFF(yy,0,getdate()+366),0)

--格式化时间
SELECT CONVERT(CHAR(10),getdate(),120)

  评论这张
 
阅读(1658)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017