仅从 SQLDATE 获取月份和年份

我只需要访问 SQLServer 中的 Month.Year from Date 字段。

1419881 次浏览
select month(dateField), year(dateField)
SELECT DATEPART(yy, DateVal)
SELECT DATEPART(MM, DateVal)
SELECT DATENAME(MM, DateVal)

让我们这样写: YEAR(anySqlDate)MONTH(anySqlDate)。例如,试着用 YEAR(GETDATE())

有两个 SQL 函数可以做到这一点:

有关详细信息,请参阅链接的文档。

除了已经给出的建议,我还可以从你的问题中推断出另一种可能性:
你还是希望结果是个约会
- 但是你想“丢弃”的天,小时,等等
- 留下一个只有年/月的日期字段

SELECT
DATEADD(MONTH, DATEDIFF(MONTH, 0, <dateField>), 0) AS [year_month_date_field]
FROM
<your_table>

这将获取从基准日期(0)开始的整个月数,然后将它们添加到该基准日期。四舍五入到日期所在的月份。

注意: 在 SQL Server 2008中,您仍然将 TIME 附加为00.00.00.000 这并不完全等同于完全“删除”任何日期和时间的记号。 也把日子定在第一天。例如2009-10.0100.00.00.00.000

我从两个方面来解释你的问题。

A)你只需要分别填写月份和年份,这里就是答案

select
[YEAR] = YEAR(getdate())
,[YEAR] = DATEPART(YY,getdate())
, [MONTH] = month(getdate())
,[MONTH] = DATEPART(mm,getdate())
,[MONTH NAME] = DATENAME(mm, getdate())

B)

您希望从给定的日期显示 '2009-11-24 09:01:55.483'月份,年份格式。所以在这种情况下,输出应该是 11.2009

如果是这样的话,那么试试这个(在其他选择中)

select [Month.Year] = STUFF(CONVERT(varchar(10), GETDATE(),104),1,3,'')
convert(varchar(7), <date_field>, 120)
because 120 results in 'yyyy-MM-dd' which is varchar(10)
using varchar(7) will display only year and month


example:
select convert(varchar(7), <date_field>, 120), COUNT(*)
from <some_table>
group by convert(varchar(7), <date_field>, 120)
order by 1
SELECT convert(varchar(7), getdate(), 126)

你可能想看看这个网站: Http://anubhavg.wordpress.com/2009/06/11/how-to-format-datetime-date-in-sql-server-2005/

datename(m,column)+' '+cast(datepart(yyyy,column) as varchar) as MonthYear

产出将会是: ‘2013年12月’

RIGHT(CONVERT(VARCHAR(10), reg_dte, 105), 7)

试试这个

select to_char(DATEFIELD,'MON') from YOUR_TABLE

例如。

select to_char(sysdate, 'MON') from dual

这也会有所帮助。

SELECT YEAR(0), MONTH(0), DAY(0);

或者

SELECT YEAR(getdate()), MONTH(getdate()), DAY(getdate());

或者

SELECT YEAR(yourDateField), MONTH(yourDateField), DAY(yourDateField);
CONCAT (datepart (yy,DATE), FORMAT (DATE,'MM'))

给你例如201601,如果你想要一个六位数的结果

我的数据库不支持上面提到的大部分功能,但是我发现它可以工作:

SELECT * FROM table WHERE SUBSTR(datetime_column, starting_position, number_of_strings)=required_year_and_month;

例如: SELECT SUBSTR(created, 1,7) FROM table; < br >

以“ yyyy-mm”格式返回年份和月份

select convert(varchar(11), transfer_date, 106)

得到了我想要的日期格式为2018年3月7日的结果

我的专栏“ Transfer _ date”是一个 datetime 类型的专栏,我使用的是湛蓝色的 SQLServer2017

有些数据库,如 MS ACCESSRODBC可能不支持 SQL SERVER函数,但对于任何具有 FORMAT函数的数据库,您可以简单地这样做:

SELECT FORMAT(<your-date-field>,"YYYY-MM") AS year-date FROM <your-table>

结果: “ YYYY-MM”

SELECT cast(YEAR(<DateColumn>) as varchar) + '-' + cast(Month(<DateColumn>) as varchar)

从日期开始计算月份和年份

DECLARE @lcMonth nvarchar(10)
DECLARE @lcYear nvarchar(10)


SET @lcYear=(SELECT  DATEPART(YEAR,@Date))
SET @lcMonth=(SELECT  DATEPART(MONTH,@Date))

查询:-Select datename(m,GETDATE())+'-'+cast(datepart(yyyy,GETDATE()) as varchar) as FieldName

产出:-2019年1月

我们可以使用的通用数据域

datename(m,<DateField>)+' '+cast(datepart(yyyy,<DateField>) as varchar) as FieldName
SELECT REPLACE(RIGHT(CONVERT(VARCHAR(11), GETDATE(), 106), 8), ' ', '-')

产出: 2019年3月

试试这个:

葡萄牙语

SELECT format(dateadd(month, 0, getdate()), 'MMMM', 'pt-pt') + ' ' + convert(varchar(10),year(getdate()),100)

结果: Maio 2019


说英语

SELECT format(dateadd(month, 0, getdate()), 'MMMM', 'en-US') + ' ' + convert(varchar(10),year(getdate()),100)

结果: 二零一九年五月

如果你想在另一种语言,改变“ 明白”或“ 美国”到任何这些在 链接

我有一个具体的要求,做一些类似的地方,它会显示月份的年份,可以做到以下几点:

SELECT DATENAME(month, GETDATE()) + '-' + CAST(YEAR(GETDATE()) AS nvarchar) AS 'Month-Year'

在我的特殊情况下,我需要把它缩写为3个字母的月份和一个2位数的年份,看起来像这样: SELECT LEFT(DATENAME(month, GETDATE()), 3) + '-' + CAST(RIGHT(YEAR(GETDATE()),2) AS nvarchar(2)) AS 'Month-Year'

试试 SELECT CONCAT(month(datefield), '.', year(datefield)) FROM YOURTABLE;

select CONCAT(MONTH(GETDATE()),'.',YEAR(GETDATE()))
Output: **5.2020**


select CONCAT(DATENAME(MONTH , GETDATE()),'.',YEAR(GETDATE()))
Output: **May.2020**

另一个简单的答案是从日期中删除天数

这里介绍如何在 BigQuery 中实现

SELECT DATE_ADD(<date_field>, INTERVAL 1 - extract(day from <date_field>) DAY) as year_month_date

举个例子:

SELECT DATE_ADD(date '2021-03-25', INTERVAL 1 - extract(day from date '2021-03-25') DAY) as year_month_date

返回 2021-03-01

为了报告的目的,我倾向于使用

CONCAT(YEAR([DateColumn]), RIGHT(CONCAT('00', MONTH([DateColumn])), 2))

您将丢失日期类型,因为它将返回(n) varchar。但是,如果该列的前导零是可排序的(例如’202112’>’202102’)。您还可以在年和月之间添加一个分隔符,如

CONCAT(YEAR([DateColumn]), '-', RIGHT(CONCAT('00', MONTH([DateColumn])), 2))

返回有点像“2020-08”(仍然可以分类)。

SELECT * FROM demo
WHERE attendance_year_month < SUBSTRING(CURRENT_TIMESTAMP,1,11)
AND
attendance_year_month >= DATE_SUB(SUBSTRING(CURRENT_TIMESTAMP,1,11), INTERVAL 6 MONTH)

对于 MySQL 来说,这种方法非常有效:

DATE_FORMAT(<your-date>, '%Y-%m %M')

它进入 SELECT语句,下面是输出:

2014-03 March

有关 DATE_FORMAT的更多信息,请查看文档: Https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html#function_date-format

函数“ Format”是一个方便而灵活的函数,但是有一个性能问题,更多细节

如果您对格式化不是很认真,那么可以通过将年份月份转换为字符串来获取年份月份,运行时间也是可以接受的

SELECT substring(<DateColumn> as varchar) ,0, 8 ) as YearMonth