从SQL Server 2005中的日期时间获取月份和年份

从SQL Server 2005中的日期时间获取月份和年份

Get month and year from a datetime in SQL Server 2005

我需要像'Jan 2008'这样的SQL Server中日期时间的月份+年。 我按月,年对查询进行分组。 我已经搜索并找到了诸如datepart,convert等功能,但是它们似乎都没有用。 我在这里想念什么吗? 有这个功能吗?


1
2
3
4
SELECT
datepart(MONTH,getdate()) -- integer (1,2,3...)
,datepart(YEAR,getdate()) -- integer
,datename(MONTH,getdate()) -- string ('September',...)

如果您要让它们以字符串形式返回,则应采用这种格式;

1
2
3
SELECT
  CONVERT(CHAR(4), date_of_birth, 100) + CONVERT(CHAR(4), date_of_birth, 120)
FROM customers

这是其他格式选项


从SQL Server 2012开始,您可以使用:

1
SELECT FORMAT(@DATE, 'yyyyMM')

采用:

1
2
SELECT datepart(mm,getdate())  --to get month value
SELECT datename(mm,getdate())  --to get name of month


有趣的是,我只是在四处游玩,在SQL Server和LINQ中编写相同的查询。

1
2
3
4
5
6
7
8
9
SELECT
    DATENAME(mm, article.Created) AS MONTH,
    DATENAME(yyyy, article.Created) AS YEAR,
    COUNT(*) AS Total
FROM Articles AS article
GROUP BY
    DATENAME(mm, article.Created),
    DATENAME(yyyy, article.Created)
ORDER BY MONTH, YEAR DESC

它产生以下输出(示例)。

1
2
3
MONTH | YEAR | Total

January | 2009 | 2

在SQL Server 2012中,可以使用以下内容

选择FORMAT(getdate(),'MMM yyyy')

这给出了确切的" 2016年6月"


这个怎么样?

1
SELECT DateName( MONTH, getDate() ) + ' ' + DateName( YEAR, getDate() )

1
( MONTH(Created) + ',' + YEAR(Created) ) AS DATE

最好的方法是:

1
dateadd(MONTH,datediff(MONTH,0,*your_date*),0)

它将保留您的日期时间类型


该格式不存在。您需要将两件事结合起来,

1
SELECT CONVERT(VARCHAR(4),getdate(),100)  + CONVERT(VARCHAR(4),YEAR(getdate()))

返回完整的月份名称--完整的年份,例如March-2017

1
CONCAT(DATENAME(mm, GetDate()), '-', DATEPART(yy, GetDate()))

我遇到了同样的问题,环顾四周后发现:

1
2
3
SELECT DATENAME(yyyy, DATE) AS YEAR
FROM Income
GROUP BY DATENAME(yyyy, DATE)

效果很好!


将日期转换为每月的第一天,可以使您根据单个属性进行分组和排序,根据我的经验,它更快。

1
2
3
4
5
6
7
8
9
10
11
12
13
DECLARE @mytable TABLE(mydate datetime)
DECLARE @DATE datetime
SET @DATE = '19000101'
while @DATE < getdate() BEGIN
    INSERT INTO @mytable VALUES(@DATE)
    SET @DATE = dateadd(DAY,1,@DATE)
END

SELECT COUNT(*) total_records FROM @mytable

SELECT dateadd(MONTH,datediff(MONTH,0,mydate),0) first_of_the_month, COUNT(*) cnt
FROM @mytable
GROUP BY dateadd(MONTH,datediff(MONTH,0,mydate),0)

1
2
3
4
5
6
7
8
9
10
11
12
---Lalmuni Demos---
CREATE TABLE Users
(
userid INT,date_of_birth DATE
)
---insert values---
INSERT INTO Users VALUES(4,'9/10/1991')

SELECT DATEDIFF(YEAR,date_of_birth, getdate()) - (CASE WHEN (DATEADD(YEAR, DATEDIFF(YEAR,date_of_birth, getdate()),date_of_birth)) > getdate() THEN 1 ELSE 0 END) AS Years,
MONTH(getdate() - (DATEADD(YEAR, DATEDIFF(YEAR, date_of_birth, getdate()), date_of_birth))) - 1 AS Months,
DAY(getdate() - (DATEADD(YEAR, DATEDIFF(YEAR,date_of_birth, getdate()), date_of_birth))) - 1 AS Days,
FROM users


1
CAST(CAST(sq.QuotaDate AS DATE) AS VARCHAR(7))

给出" 2006-04"格式


问题是有关SQL Server 2005的,这里的许多答案都是针对更高版本的SQL Server的。

1
2
SELECT CONVERT (VARCHAR(7), getdate(),20)
--Typical output 2015-04

SQL Server 2005不具有SQL Server 2008中引入的日期功能


是的,您可以使用datename(month,intime)来获取文本月份。


很好

1
2
3
4
5
6
7
8
9
10
11
12
13
DECLARE @pYear VARCHAR(4)

DECLARE @pMonth VARCHAR(2)

DECLARE @pDay VARCHAR(2)

SET @pYear  = RIGHT(CONVERT(CHAR(10), GETDATE(), 101), 4)

SET @pMonth = LEFT(CONVERT(CHAR(10), GETDATE(), 101), 2)

SET @pDay   = SUBSTRING(CONVERT(CHAR(10), GETDATE(), 101), 4,2)

SELECT @pYear,@pMonth,@pDay

1
  ,datename(MONTH,(od.SHIP_DATE)) AS MONTH_

回答:
月_
一月
一月
九月
十月
十二月
十月
九月


以下工作完美!我只是用它,尝试一下。

1
date_format(DATE,'%Y-%c')


推荐阅读

    linux查询分辨率命令?

    linux查询分辨率命令?,情况,设备,系统,分辨率,数据,命令,屏幕,屏幕分辨率,

    linux命令查询汉语?

    linux命令查询汉语?,工作,地址,系统,信息,命令,目录,标准,状态,软件,亚洲,基

    linux下查询历史命令?

    linux下查询历史命令?,地址,信息,系统,服务,数据,连续,命令,数字,名称,环境,l

    linux查询表结构命令?

    linux查询表结构命令?,系统,标准,信息,数据,地址,设备,时间,适当,软件,命令,l

    linux搜索过去命令?

    linux搜索过去命令?,系统,信息,命令,名称,工作,预期,数字,地址,标准,服务,Lin

    linux网络命令查询?

    linux网络命令查询?,信息,网络,系统,地址,工作,状态,技术,电脑,命令,设备,lin

    linux查询子目录命令?

    linux查询子目录命令?,信息,系统,命令,名称,文件,名字,管理,软件,灵活,工具,L

    linux命令搜索命令?

    linux命令搜索命令?,系统,位置,地址,标准,管理,信息,命令,名称,工作,文件,Lin

    linux查询状态的命令?

    linux查询状态的命令?,系统,状态,信息,管理,数据,情况,命令,综合,电脑,工具,l

    linux地址查询命令?

    linux地址查询命令?,地址,网络,系统,工作,信息,设备,名称,标准,手机,管理,lin

    linux查询id命令?

    linux查询id命令?,信息,系统,密码,地址,用户,命令,数据,术语,用户名,用户信

    linux日志搜索命令?

    linux日志搜索命令?,信息,系统,对比,工具,一致,日志,文件,命令,实时,网络,lin

    命令查询linux版本?

    命令查询linux版本?,系统,信息,名称,状态,电脑,设备,工具,软件,版本,命令,在L

    linux命令字符搜索?

    linux命令字符搜索?,系统,工具,命令,灵活,信息,工作,字符串,文本,文件,模式,l

    linux7查询路由命令?

    linux7查询路由命令?,网络,系统,信息,工作,地址,情况,命令,通信,工具,检测,在

    linux查询网卡命令?

    linux查询网卡命令?,地址,系统,网络,信息,电脑,服务,设备,技术指标,命令,状

    linux命令查询词典?

    linux命令查询词典?,地址,工作,标准,信息,系统,命令,管理,目录,单位,数据,lin

    linux隧道查询命令?

    linux隧道查询命令?,工作,系统,地址,信息,时间,网络,命令,检测,设备,目录,lin

    linux命令缩写查询?

    linux命令缩写查询?,工作,系统,地址,信息,管理,命令,软件,设备,目录,基础,lin