sql 日期分别提取年月

sql 日期分别提取年月,第1张

因为这个时候time是datetime类型,left是针对字符串的 *** 作,先把time转换为字符串就可以了

select left(convert(varchar,getdate(),21),7)

思路:先准备好整个时间段的月份,然后关联统计就行了;

--mssql:

WITH TMP AS

 (SELECT '1994-1-1' AS BEGAN_DATE, '1994-12-1' AS END_DATE, 10000 AS JS,

         120000 AS ZJS 

  UNION ALL

  SELECT '1995-1-1', '1995-5-1', 10000, 50000 

  UNION ALL

  SELECT '1995-6-1', '1998-3-1', 10000, 3400000

 )

,TMP1 AS (SELECT DATEADD(MONTH, TNUMBER, T1BEGAN_DATE) AS T_MONTH

FROM   MASTER  SPT_VALUES T,

       (SELECT MIN(BEGAN_DATE) AS BEGAN_DATE,

                DATEDIFF(MONTH, MIN(BEGAN_DATE), MAX(END_DATE)) AS T_MONTH

         FROM   TMP) T1

WHERE  TNUMBER <= T1T_MONTH AND

       TTYPE = 'P')

SELECT DATENAME(YEAR, T1T_MONTH) AS YEARS, SUM(TJS) AS ZJS

FROM   TMP T

INNER  JOIN TMP1 T1

ON     T1T_MONTH >= CAST(TBEGAN_DATE AS DATE) AND

       T1T_MONTH <= CAST(TEND_DATE AS DATE)

GROUP  BY DATENAME(YEAR, T1T_MONTH), TBEGAN_DATE

ORDER  BY DATENAME(YEAR, T1T_MONTH);

--oracle :

WITH TMP AS

 (SELECT '1994-1-1' AS BEGAN_DATE, '1994-12-1' AS END_DATE, 10000 AS JS,

         120000 AS ZJS

  FROM   DUAL

  UNION ALL

  SELECT '1995-1-1', '1995-5-1', 10000, 50000

  FROM   DUAL

  UNION ALL

  SELECT '1995-6-1', '1998-3-1', 10000, 3400000

  FROM   DUAL),

TMP1 AS

 (SELECT ADD_MONTHS(BEGAN_DATE, LEVEL - 1) T_MONTH

  FROM   (SELECT TO_DATE(MIN(BEGAN_DATE), 'YYYY-MM-DD') BEGAN_DATE,

                  TO_DATE(MAX(END_DATE), 'YYYY-MM-DD') END_DATE

           FROM   TMP)

  CONNECT BY LEVEL <= MONTHS_BETWEEN(END_DATE, BEGAN_DATE) + 1)

SELECT TO_CHAR(T_MONTH, 'YYYY') AS YEARS, SUM(TJS) AS ZJS

FROM   TMP T

INNER  JOIN TMP1 T1

ON     T1T_MONTH >= TO_DATE(TBEGAN_DATE, 'YYYY-MM-DD') AND

       T1T_MONTH <= TO_DATE(TEND_DATE, 'YYYY-MM-DD')

GROUP  BY TO_CHAR(T_MONTH, 'YYYY'), TBEGAN_DATE

ORDER  BY TO_CHAR(T_MONTH, 'YYYY')

工具/材料:Management Studio。

1、首先在桌面上,点击“Management Studio”图标。

2、之后在该界面中,点击左上角“新建查询”选项。

3、接着在该界面中,输入获取今年的上一年和下一年(去年与明年)的sql语句“select year(getdate())-1 AS "去年" , year(getdate())+1 AS "明年"”。

4、然后在该界面中,点击左上方“执行”按钮。

5、最后在该界面中,显示获取今年的上一年和下一年(去年与明年)成功。

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

使用下面的 SELECT 语句:

SELECT GETDATE() AS CurrentDateTime

结果:

CurrentDateTime

2008-12-29 16:25:46635

注释:上面的时间部分精确到毫秒。

例子 2

下面的 SQL 创建带有日期时间列 (OrderDate) 的 "Orders" 表:

CREATE TABLE Orders

(

OrderId int NOT NULL PRIMARY KEY,

ProductName varchar(50) NOT NULL,

OrderDate datetime NOT NULL DEFAULT GETDATE()

)

请注意,OrderDate 把 GETDATE() 规定为默认值。结果是,当您在表中插入新行时,当前日期和时间自动插入列中。

现在,我们希望在 "Orders" 表中插入一条记录:

INSERT INTO Orders (ProductName) VALUES ('Computer')

"Orders" 表将成为这样:

OrderId ProductName OrderDate

1 'Computer' 2008-12-29 16:25:46635

SQL数据表只有年龄可以使用数据库里的日期处理函数,倒推出生年份。年龄指的是,从出生年月到现在经过了多少年。也就是说,从现在往前推年龄的年数,就得到了出生年份。比如,你现在20岁,可以用如下SQL得出出生的年月:SELECT DATEADD(year, -20, GETDATE)。

年龄:

年龄,指一个人从出生时起到计算时止生存的时间长度,通常用年岁来表示。年龄是一种具有生物学基础的自然标志,一个人出生以后,随着日月流逝,年龄也随之增长,这是不可抗拒的自然规律。人在进行自身再生产的同时,也进行着年龄的再生产,它总是由不同年代出生的不同年龄的个人所组成。都与每个人的年龄密切相关。所以,正确计算年龄具有十分重要的意义。

alter table employee

add constraint date1_1(约束名) check (year(Date_hired)-year(Birthday)>=18)

以上就是关于sql 日期分别提取年月全部的内容,包括:sql 日期分别提取年月、sql 从日期中提取年份,按年份求和、oracle的sql 如何获取今年的上一年和下一年(去年与明年)等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9540974.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-29
下一篇 2023-04-29

发表评论

登录后才能评论

评论列表(0条)

保存