我只需要在SQL Server中的Date字段中访问Month.Year。
答案 0 :(得分:148)
除了已经提出的建议外,我还可以从你的问题中推断出另一个可能性:
- 你仍然希望结果是日期
- 但你想'丢弃'天,小时等等
- 仅保留一年/月的日期字段
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 这与完全“删除”任何日期和时间的符号并不完全相同。 DAY也设置为第一个。例如2009-10-01 00:00:00.000
答案 1 :(得分:114)
select month(dateField), year(dateField)
答案 2 :(得分:31)
SELECT DATEPART(yy, DateVal)
SELECT DATEPART(MM, DateVal)
SELECT DATENAME(MM, DateVal)
答案 3 :(得分:29)
SELECT convert(varchar(7), getdate(), 126)
您可能想看看这个网站: http://anubhavg.wordpress.com/2009/06/11/how-to-format-datetime-date-in-sql-server-2005/
答案 4 :(得分:15)
datename(m,column)+' '+cast(datepart(yyyy,column) as varchar) as MonthYear
输出结果如下:&#39; 2013年12月&#39;
答案 5 :(得分:14)
答案 6 :(得分:11)
这也很有帮助。
SELECT YEAR(0), MONTH(0), DAY(0);
或
SELECT YEAR(getdate()), MONTH(getdate()), DAY(getdate());
或
SELECT YEAR(yourDateField), MONTH(yourDateField), DAY(yourDateField);
答案 7 :(得分:11)
让我们这样写:YEAR(anySqlDate)
和MONTH(anySqlDate)
。例如,尝试使用YEAR(GETDATE())
。
答案 8 :(得分:9)
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
答案 9 :(得分:6)
我以两种方式解释你的问题。
a)你只需要Month&amp;这一年分别是答案
select
[YEAR] = YEAR(getdate())
,[YEAR] = DATEPART(YY,getdate())
, [MONTH] = month(getdate())
,[MONTH] = DATEPART(mm,getdate())
,[MONTH NAME] = DATENAME(mm, getdate())
b)
您希望在给定日期显示 MONTH.YEAR 格式的'2009-11-24 09:01:55.483'
。因此,在这种情况下,输出应为11.2009
。
如果应该是这种情况,那么试试这个(以及其他替代方案)
select [Month.Year] = STUFF(CONVERT(varchar(10), GETDATE(),104),1,3,'')
答案 10 :(得分:3)
RIGHT(CONVERT(VARCHAR(10), reg_dte, 105), 7)
答案 11 :(得分:3)
CONCAT (datepart (yy,DATE), FORMAT (DATE,'MM'))
如果你想要一个六位数的结果,给你201601
答案 12 :(得分:3)
某些数据库(例如MS ACCESS
或RODBC
)可能不支持SQL SERVER
函数,但对于具有FORMAT
函数的任何数据库,您只需执行以下操作:
SELECT FORMAT(<your-date-field>,"YYYY-MM") AS year-date FROM <your-table>
答案 13 :(得分:2)
试试这个
select to_char(DATEFIELD,'MON') from YOUR_TABLE
例如
select to_char(sysdate, 'MON') from dual
答案 14 :(得分:2)
选择CONCAT(MONTH(GETDATE()),'。',YEAR(GETDATE()))
输出: 2020年5月
选择CONCAT(DATENAME(MONTH,GETDATE()),'。',YEAR(GETDATE()))
输出: 2020年5月
答案 15 :(得分:1)
出于报告目的,我倾向于使用
CONCAT(YEAR([DateColumn]), RIGHT(CONCAT('00', MONTH([DateColumn])), 2))
您将丢失日期类型,因为它将返回 (n)varchar。但是使用前导零,该列是可排序的(例如“202112”>“202102”)。您还可以在年和月之间添加一个分隔符,如
CONCAT(YEAR([DateColumn]), '-', RIGHT(CONCAT('00', MONTH([DateColumn])), 2))
返回诸如“2020-08”之类的想法(仍可排序)。
答案 16 :(得分:1)
另一个简单的答案是从日期中删除天数
这里是如何在 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
答案 17 :(得分:0)
从日期获取月份和年份
DECLARE @lcMonth nvarchar(10)
DECLARE @lcYear nvarchar(10)
SET @lcYear=(SELECT DATEPART(YEAR,@Date))
SET @lcMonth=(SELECT DATEPART(MONTH,@Date))
答案 18 :(得分:0)
查询:-- (UIEdgeInsets)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout insetForSectionAtIndex:(NSInteger)section{
return UIEdgeInsetsMake(top, left, bottom, right);
}
输出:-2019年1月
我们可以使用的通用日期字段
Select datename(m,GETDATE())+'-'+cast(datepart(yyyy,GETDATE()) as varchar) as FieldName
答案 19 :(得分:0)
SELECT REPLACE(RIGHT(CONVERT(VARCHAR(11), GETDATE(), 106), 8), ' ', '-')
输出:2019年3月
答案 20 :(得分:0)
尝试一下:
葡萄牙语
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)
结果: 2019年5月
如果您要使用另一种语言,请将“ pt-pt ”或“ zh-CN ”更改为link
中的任何一种答案 21 :(得分:0)
我有一个特殊的要求,即执行类似的操作以显示月份年份,可以通过以下方式完成:
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'
答案 22 :(得分:0)
尝试SELECT CONCAT(month(datefield), '.', year(datefield)) FROM YOURTABLE;
答案 23 :(得分:0)
对于结果:“ YYYY-MM”
SELECT cast(YEAR(<DateColumn>) as varchar) + '-' + cast(Month(<DateColumn>) as varchar)
答案 24 :(得分:0)
select convert(varchar(11), transfer_date, 106)
将我想要的日期结果格式化为2018年3月7日
我的专栏&#39; transfer_date&#39;是一个日期时间类型列,我在Azure上使用SQL Server 2017
答案 25 :(得分:0)
我的数据库不支持上述大多数功能,但我发现这有效:
SELECT * FROM table WHERE SUBSTR(datetime_column, starting_position, number_of_strings)=required_year_and_month;
例如:
SELECT SUBSTR(created, 1,7) FROM table;
以&#34; yyyy-mm&#34;
的格式返回年份和月份