sql如何获取一列日期的年份和月份

sql如何获取一列日期的年份和月份,第1张

mysql> select DATE_FORMAT('1997-10-04 22:23:00', '%Y/%m ');

+----------------------------------------------+

| DATE_FORMAT('1997-10-04 22:23:00', '%Y/%m ') |

+----------------------------------------------+

| 1997/10 |

+----------------------------------------------+

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

--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')

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如何获取一列日期的年份和月份全部的内容,包括:sql如何获取一列日期的年份和月份、sql 从日期中提取年份,按年份求和、sql如何读取系统日期和时间等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址:https://54852.com/web/9724879.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存