ฉันต้องการเดือน + ปีจากวันที่และเวลาใน SQL Server เช่น 'ม.ค. 2008' ฉันกำลังจัดกลุ่มคำค้นหาตามเดือนปี ฉันได้ค้นหาและพบฟังก์ชันเช่น datepart, convert เป็นต้น แต่ดูเหมือนจะไม่มีประโยชน์สำหรับสิ่งนี้ ฉันขาดอะไรที่นี่? มีฟังก์ชันนี้หรือไม่?
ฉันต้องการเดือน + ปีจากวันที่และเวลาใน SQL Server เช่น 'ม.ค. 2008' ฉันกำลังจัดกลุ่มคำค้นหาตามเดือนปี ฉันได้ค้นหาและพบฟังก์ชันเช่น datepart, convert เป็นต้น แต่ดูเหมือนจะไม่มีประโยชน์สำหรับสิ่งนี้ ฉันขาดอะไรที่นี่? มีฟังก์ชันนี้หรือไม่?
คำตอบ:
หากคุณหมายความว่าคุณต้องการให้กลับเป็นสตริงในรูปแบบนั้น
SELECT
CONVERT(CHAR(4), date_of_birth, 100) + CONVERT(CHAR(4), date_of_birth, 120)
FROM customers
select
datepart(month,getdate()) -- integer (1,2,3...)
,datepart(year,getdate()) -- integer
,datename(month,getdate()) -- string ('September',...)
datepart(month,getdate())
และdatepart(year,getdate())
. อะไรคือเดือนและปี ?
เริ่มต้นด้วย SQL Server 2012 คุณสามารถใช้:
SELECT FORMAT(@date, 'yyyyMM')
ใช้:
select datepart(mm,getdate()) --to get month value
select datename(mm,getdate()) --to get name of month
ตลกดีฉันแค่เล่นกับการเขียนแบบสอบถามเดียวกันนี้ใน SQL Server แล้วก็ LINQ
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
มันสร้าง ouput ต่อไปนี้ (ตัวอย่าง)
Month | Year | Total
January | 2009 | 2
ใน SQL Server 2012 สามารถใช้ด้านล่างได้
เลือก FORMAT (getdate (), 'MMM yyyy')
สิ่งนี้ให้ "มิ.ย. 2016" ที่แน่นอน
แล้วเรื่องนี้ล่ะ?
Select DateName( Month, getDate() ) + ' ' + DateName( Year, getDate() )
( Month(Created) + ',' + Year(Created) ) AS Date
ไม่มีรูปแบบนั้น คุณต้องทำสองสิ่งร่วมกัน
select convert(varchar(4),getdate(),100) + convert(varchar(4),year(getdate()))
วิธีที่ดีที่สุดคือ:
dateadd(month,datediff(month,0,*your_date*),0)
มันจะคงประเภทวันที่และเวลาของคุณไว้
ส่งคืนชื่อเต็มเดือน - ปีเต็มเช่น March-2017
CONCAT(DATENAME(mm, GetDate()), '-', DATEPART(yy, GetDate()))
ฉันมีปัญหาเดียวกันและหลังจากมองไปรอบ ๆ ฉันพบสิ่งนี้:
SELECT DATENAME(yyyy, date) AS year
FROM Income
GROUP BY DATENAME(yyyy, date)
มันใช้งานได้ดี!
การแปลงวันที่เป็นวันแรกของเดือนทำให้คุณสามารถจัดกลุ่มตามและเรียงลำดับตามแอตทริบิวต์เดียวได้และเร็วกว่าในประสบการณ์ของฉัน
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)
---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
cast(cast(sq.QuotaDate as date) as varchar(7))
ให้รูปแบบ "2006-04"
คำถามเกี่ยวกับ SQL Server 2005 คำตอบส่วนใหญ่มีไว้สำหรับ SQL Server รุ่นที่ใหม่กว่า
select convert (varchar(7), getdate(),20)
--Typical output 2015-04
SQL Server 2005 ไม่มีฟังก์ชันวันที่ซึ่งเปิดตัวใน SQL Server 2008
ใช่คุณสามารถใช้datename(month,intime)
เพื่อรับเดือนในข้อความ
,datename(month,(od.SHIP_DATE)) as MONTH_
คำตอบ: MONTH_ มกราคมมกราคมกันยายนตุลาคมธันวาคมตุลาคมกันยายนกันยายน
มันใช้งานได้ดี
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
ต่อไปนี้ทำงานได้อย่างสมบูรณ์แบบ! เพิ่งเคยใช้เลยลองดู
date_format(date,'%Y-%c')