那么可以这样写
SELECT WEEDNAME='星期'+SUBSTRING('一二三四五六日',CONVERT(INT,WEEKD),1) FROM TABLENAME
检索日期所在周的一周各天日期方法
一、用到的函数有datepart(),dateadd()
1、datepart()函数,返回代表指定日期的指定日期部分的整数。
语法:DATEPART ( datepart ,date )
参数:datepart
是指定应返回的日期部分的参数。参数如下
2、DATEADD() 函数在日期中添加或减去指定的时间间隔。
语法:DATEADD(datepart,number,date)
date 参数是合法的日期表达式。number 是您希望添加的间隔数;对于未来的时间,此数是正数,对于过去的时间,此数是负数。
datepart 参数可以是下列的值:
二、以系统当前时间为例,检索一周各天时间的语句如下:
1、DATEPART(weekday,getdate())返回的是整型数值1-7,分别代表周日、周一到周六
2、语句分别获取周日到周六的日期时间,然后用union 进行检索结果连接。
3、已获取周日时间为例:
DATEPART(weekday,getdate()) 返回1,即当前日期就是周日,那么输出当前时间getdate(),
DATEPART(weekday,getdate()) 返回2,即前日期是周一,那么周日是前一天,使用函数获取前一天的日期:dateadd(dd,-1,getdate())
以此类推就获取了日期所在周的周日日期时间。
selectcase when DATEPART(weekday,getdate())=1 then getdate()
when DATEPART(weekday,getdate())=2 then dateadd(dd,-1,getdate())
when DATEPART(weekday,getdate())=3 then dateadd(dd,-2,getdate())
when DATEPART(weekday,getdate())=4 then dateadd(dd,-3,getdate())
when DATEPART(weekday,getdate())=5 then dateadd(dd,-4,getdate())
when DATEPART(weekday,getdate())=6 then dateadd(dd,-5,getdate())
when DATEPART(weekday,getdate())=7 then dateadd(dd,-6,getdate()) end as '日期','周日' union
select
case when DATEPART(weekday,getdate())=1 then dateadd(dd,1,getdate())
when DATEPART(weekday,getdate())=2 then dateadd(dd,0,getdate())
when DATEPART(weekday,getdate())=3 then dateadd(dd,-1,getdate())
when DATEPART(weekday,getdate())=4 then dateadd(dd,-2,getdate())
when DATEPART(weekday,getdate())=5 then dateadd(dd,-3,getdate())
when DATEPART(weekday,getdate())=6 then dateadd(dd,-4,getdate())
when DATEPART(weekday,getdate())=7 then dateadd(dd,-5,getdate()) end as '日期','周一' union
select
case when DATEPART(weekday,getdate())=1 then dateadd(dd,2,getdate())
when DATEPART(weekday,getdate())=2 then dateadd(dd,1,getdate())
when DATEPART(weekday,getdate())=3 then dateadd(dd,0,getdate())
when DATEPART(weekday,getdate())=4 then dateadd(dd,-1,getdate())
when DATEPART(weekday,getdate())=5 then dateadd(dd,-2,getdate())
when DATEPART(weekday,getdate())=6 then dateadd(dd,-3,getdate())
when DATEPART(weekday,getdate())=7 then dateadd(dd,-4,getdate()) end as '日期','周二' union
select
case when DATEPART(weekday,getdate())=1 then dateadd(dd,3,getdate())
when DATEPART(weekday,getdate())=2 then dateadd(dd,2,getdate())
when DATEPART(weekday,getdate())=3 then dateadd(dd,1,getdate())
when DATEPART(weekday,getdate())=4 then dateadd(dd,0,getdate())
when DATEPART(weekday,getdate())=5 then dateadd(dd,-1,getdate())
when DATEPART(weekday,getdate())=6 then dateadd(dd,-2,getdate())
when DATEPART(weekday,getdate())=7 then dateadd(dd,-3,getdate()) end as '日期','周三' union
select
case when DATEPART(weekday,getdate())=1 then dateadd(dd,4,getdate())
when DATEPART(weekday,getdate())=2 then dateadd(dd,3,getdate())
when DATEPART(weekday,getdate())=3 then dateadd(dd,2,getdate())
when DATEPART(weekday,getdate())=4 then dateadd(dd,1,getdate())
when DATEPART(weekday,getdate())=5 then dateadd(dd,0,getdate())
when DATEPART(weekday,getdate())=6 then dateadd(dd,-1,getdate())
when DATEPART(weekday,getdate())=7 then dateadd(dd,-2,getdate()) end as '日期','周四' union
select
case when DATEPART(weekday,getdate())=1 then dateadd(dd,5,getdate())
when DATEPART(weekday,getdate())=2 then dateadd(dd,4,getdate())
when DATEPART(weekday,getdate())=3 then dateadd(dd,3,getdate())
when DATEPART(weekday,getdate())=4 then dateadd(dd,2,getdate())
when DATEPART(weekday,getdate())=5 then dateadd(dd,1,getdate())
when DATEPART(weekday,getdate())=6 then dateadd(dd,0,getdate())
when DATEPART(weekday,getdate())=7 then dateadd(dd,-1,getdate()) end as '日期','周五' union
select
case when DATEPART(weekday,getdate())=1 then dateadd(dd,6,getdate())
when DATEPART(weekday,getdate())=2 then dateadd(dd,5,getdate())
when DATEPART(weekday,getdate())=3 then dateadd(dd,4,getdate())
when DATEPART(weekday,getdate())=4 then dateadd(dd,3,getdate())
when DATEPART(weekday,getdate())=5 then dateadd(dd,2,getdate())
when DATEPART(weekday,getdate())=6 then dateadd(dd,1,getdate())
when DATEPART(weekday,getdate())=7 then dateadd(dd,0,getdate()) end as '日期','周六'
三、执行结果
TO_DATE格式(以时间:2007-11-02 13:45:25为例)
1、日期和字符转换函数用法(to_date,to_char)
select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') as nowTime from dual; //日期转化为字符串
select to_char(sysdate,'yyyy') as nowYear from dual; //获取时间的年
select to_char(sysdate,'mm') as nowMonth from dual; //获取时间的月
select to_char(sysdate,'dd') as nowDay from dual; //获取时间的日
select to_char(sysdate,'hh24') as nowHour from dual; //获取时间的时
select to_char(sysdate,'mi') as nowMinute from dual; //获取时间的分
select to_char(sysdate,'ss') as nowSecond from dual; //获取时间的秒
2、字符串和时间互转
select to_date('2004-05-07 13:23:44','yyyy-mm-dd hh24:mi:ss') from dual
select to_char( to_date(222,'J'),'Jsp') from dual //显示Two Hundred Twenty-Two
扩展资料
date 转换为字符串:
to_char(日期,”转换格式” ) 即把给定的日期按照“转换格式”转换。
转换的格式:
表示year的:y 表示年的最后一位 yy 表示年的最后2位 yyy 表示年的最后3位 yyyy 用4位数表示年。
表示month的:mm 用2位数字表示月;mon 用简写形式 比如11月或者nov ;month 用全称 比如11月或者november。
表示day的:dd 表示当月第几天;ddd表示当年第几天;dy 当周第几天 简写 比如星期五或者fri;day当周第几天全写。比如星期五或者friday。
表示hour的:hh 2位数表示小时 12进制; hh24 2位数表示小时 24小时。
表示minute的:mi 2位数表示分钟。
表示second的:ss 2位数表示秒60进制。
下面的语句取当前日期所在的星期的星期一的日期select dateadd(day, 2-datepart(weekday,getdate()),getdate())
根据条件替换getdate(),就可以了
首先将数据源中的日期字段,使用日期格式化函数,格式化为Y-M的形式
增加一列,使用日期格式化函数,获取去年的月份信息,命名为LAST_DATE
对同一个视图,进行左连接,获取当月的金额以及去年该月份的金额
datepart函数中有第几周的写法datepart(wk,‘日期’)这样就能查出来是第几周了,至于前面你的数字只要加上年份和w就可以了,其实剩下的就是字符串的截取和拼接了。
在函数CONVERT()中你可以使用许多种不同风格的日期和时间格式。表111显示了所有的格式。
表111日期和时间的类型
类型值标准输出
0Defaultmonddyyyyhh:miAM
1USAmm/dd/yy
2ANSIyymmdd
3British/Frenchdd/mm/yy
4Germanddmmyy
5Italiandd-mm-yy
6-ddmonyy
7-mondd,yy
8-hh:mi:ss
9Default--monddyyyy
hh:mi:ss:mmmAM(or)
10USAmm-dd-yy
11JAPANyy/mm/dd
12ISOyymmdd
13EuropeDefault--ddmonyyyy
hh:mi:ss:mmm(24h)
14-hh:mi:ss:mmm(24h)
类型0,9,和13总是返回四位的年。对其它类型,要显示世纪,把style值加上100。类型13和14返回24小时时钟的时间。类型0,7,和13返回的月份用三位字符表示(用Nov代表November)
对表111中所列的每一种格式,你可以把类型值加上100来显示有世纪的年(例如,00年将显示为2000年)。例如,要按日本标准显示日期,包括世纪,你应使用如下的语句:
SELECTCONVERT(VARCHAR(30),GETDATE(),111)
在这个例子中,函数CONVERT()把日期格式进行转换,显示为1997/11/30
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)