日期函数与转型

今天到今年最后一天,输出每天的星期

复制代码
--今年最后一天
DECLARE @lastDay_year VARCHAR(20)
--今天
DECLARE @nowDay VARCHAR(20)

SELECT  @lastDay_year = CONVERT(VARCHAR(10), DATEADD(ms, -3,DATEADD(yy,DATEDIFF(yy, 0,GETDATE()) + 1,0)), 120) ;

SELECT  @nowDay = CONVERT(VARCHAR(10), DATEADD(dd, DATEDIFF(dd, 0, GETDATE()),0), 120) ;
--其实上一句的效果和下方这个是一样的
--SELECT  @nowDay = CONVERT(VARCHAR(10), GETDATE() , 120)
WHILE ( @nowDay <= @lastDay_year ) 
    BEGIN
        DECLARE @nowDay_week INT
        --星期
        SELECT  @nowDay_week = DATEPART(weekday, @nowDay)
        PRINT @nowDay + '  ' + CAST(@nowDay_week AS VARCHAR) + '  '+ DATENAME(weekday, @nowDay)    
        SELECT  @nowDay = CONVERT(VARCHAR(10), DATEADD(d, 1,CONVERT(VARCHAR(10), @nowDay, 120)), 120) ;
    END
复制代码

 结果:

复制代码
2013-10-31  5  Thursday
2013-11-01  6  Friday
2013-11-02  7  Saturday
2013-11-03  1  Sunday
2013-11-04  2  Monday
2013-11-05  3  Tuesday
2013-11-06  4  Wednesday
2013-11-07  5  Thursday
2013-11-08  6  Friday
2013-11-09  7  Saturday
2013-11-10  1  Sunday
2013-11-11  2  Monday
2013-11-12  3  Tuesday
2013-11-13  4  Wednesday
2013-11-14  5  Thursday
2013-11-15  6  Friday
2013-11-16  7  Saturday
2013-11-17  1  Sunday
2013-11-18  2  Monday
复制代码

 

主要用到的函数有


GETDATE GETDATE() 函数从 SQL Server 返回当前的时间和日期。

语法

GETDATE()

例子

SELECT GETDATE() AS CurrentDateTime

结果:

2013-10-31 13:55:48.580

 


DATEDIFF DATEDIFF() 函数返回两个日期之间的天数。

语法

DATEDIFF(datepart,startdate,enddate)

startdate enddate 参数是合法的日期表达式。

datepart 参数可以是下列的值:

table 1

datepart缩写
yy, yyyy
季度 qq, q
mm, m
年中的日 dy, y
dd, d
wk, ww
星期 dw, w
小时 hh
分钟 mi, n
ss, s
毫秒 ms
微妙 mcs
纳秒 ns

例子:

SELECT DATEDIFF(day,'2013-10-29','2013-10-31')


结果:

2

 


DATEADD DATEADD() 函数在日期中添加或减去指定的时间间隔。

语法

DATEADD(datepart,number,date)

date 参数是合法的日期表达式。number 是您希望添加的间隔数;对于未来的时间,此数是正数,对于过去的时间,此数是负数。

datepart 参数可以是同table1的值

例子:

    SELECT GETDATE()
    SELECT DATEADD(DAY,2,GETDATE())

结果:

2013-10-31 14:00:31.463

2013-11-02 14:00:31.463

 


DATEPART 函数用于返回日期/时间的单独部分,比如年、月、日、小时、分钟等等。

语法:

DATEPART(datepart,date)

date 参数是合法的日期表达式。datepart 参数可以是上面table1的值:

例子: 

SELECT DATEPART(weekday,'2013-10-30 00:00:00.000')

结果:

4

默认的星期一 是 2,下面的语句可设置从星期一开始计数

-- 设置每周星期1为第1天
SET datefirst 1 ;

例子:

SET DATEFIRST 1;
SELECT DATEPART(weekday,'2013-10-30 00:00:00.000');

结果:

3


DATENAME  返回代表指定日期的指定日期部分的字符串。

语法:

DATENAME ( datepart , date )

date 参数是合法的日期表达式。datepart 参数可以是上面table1的值:

例子:

与 DATEPART 比较

SELECT DATENAME(month, '2013-10-30 00:00:00.000')
SELECT DATENAME(weekday, '2013-10-30 00:00:00.000')
SELECT DATEPART(month, '2013-10-30 00:00:00.000')
SELECT DATEPART(weekday, '2013-10-30 00:00:00.000')

结果:

October
Wednesday
10
3

 


CONVERT

CONVERT() 函数是把日期转换为新数据类型的通用函数。

CONVERT() 函数可以用不同的格式显示日期/时间数据。

语法:

CONVERT(data_type(length),data_to_be_converted,style)

data_type(length) 规定目标数据类型(带有可选的长度)。data_to_be_converted 含有需要转换的值。style 规定日期/时间的输出格式。

可以使用的 style 值:

Style IDStyle 格式
100 或者 0 mon dd yyyy hh:miAM (或者 PM)
101 mm/dd/yy
102 yy.mm.dd
103 dd/mm/yy
104 dd.mm.yy
105 dd-mm-yy
106 dd mon yy
107 Mon dd, yy
108 hh:mm:ss
109 或者 9 mon dd yyyy hh:mi:ss:mmmAM(或者 PM)
110 mm-dd-yy
111 yy/mm/dd
112 yymmdd
113 或者 13 dd mon yyyy hh:mm:ss:mmm(24h)
114 hh:mi:ss:mmm(24h)
120 或者 20 yyyy-mm-dd hh:mi:ss(24h)
121 或者 21 yyyy-mm-dd hh:mi:ss.mmm(24h)
126 yyyy-mm-ddThh:mm:ss.mmm(没有空格)
130 dd mon yyyy hh:mi:ss:mmmAM
131 dd/mm/yy hh:mi:ss:mmmAM

例子:

SELECT CONVERT(VARCHAR(19),GETDATE())
SELECT CONVERT(VARCHAR(10),GETDATE(),120) 
SELECT CONVERT(VARCHAR(25),GETDATE(),120)

结果:

Oct 31 2013  2:15PM
2013-10-31
2013-10-31 14:15:15


CAST 将表达式由一种数据类型转换为另一种数据类型。 

 语法:

 

CAST ( data_to_be_converted AS data_type(length) )

data_to_be_converted 含有需要转换的值。data_type(length) 规定目标数据类型(带有可选的长度)。 

 例子:

SELECT CAST(GETDATE()AS DATE)
SELECT CAST(GETDATE()AS VARCHAR(20))


结果:

2013-10-31
Oct 31 2013  2:34PM

posted on   Aidou_dream  阅读(748)  评论(0编辑  收藏  举报

编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· [AI/GPT/综述] AI Agent的设计模式综述
点击右上角即可分享
微信分享提示