ฉันต้องการเข้าถึงเฉพาะเดือนปีจากฟิลด์วันที่ใน SQL Server
ฉันต้องการเข้าถึงเฉพาะเดือนปีจากฟิลด์วันที่ใน SQL Server
คำตอบ:
เช่นเดียวกับคำแนะนำที่ให้ไปแล้วยังมีอีกหนึ่งความเป็นไปได้ที่ฉันสามารถอนุมานได้จากคำถามของคุณ:
- คุณยังต้องการให้ผลลัพธ์เป็นวันที่
- แต่คุณต้องการ 'ทิ้ง' วันชั่วโมง ฯลฯ
- ออกจากปี / เดือน ช่องวันที่เท่านั้น
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-01 00: 00: 00.000
select month(dateField), year(dateField)
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'
มีฟังก์ชัน SQL สองอย่างที่ต้องทำ:
โปรดดูเอกสารที่เชื่อมโยงสำหรับรายละเอียด
สิ่งนี้จะเป็นประโยชน์เช่นกัน
SELECT YEAR(0), MONTH(0), DAY(0);
หรือ
SELECT YEAR(getdate()), MONTH(getdate()), DAY(getdate());
หรือ
SELECT YEAR(yourDateField), MONTH(yourDateField), DAY(yourDateField);
ลองเขียนแบบนี้: YEAR(anySqlDate)
และMONTH(anySqlDate)
. ลองใช้YEAR(GETDATE())
ตัวอย่างเช่น
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
[YEAR] = YEAR(getdate())
,[YEAR] = DATEPART(YY,getdate())
, [MONTH] = month(getdate())
,[MONTH] = DATEPART(mm,getdate())
,[MONTH NAME] = DATENAME(mm, getdate())
ข)
คุณต้องการแสดงจากวันที่ที่กำหนดให้พูด'2009-11-24 09:01:55.483'
ในรูปแบบMONTH.YEAR ดังนั้นผลลัพธ์ควรมา11.2009
ในกรณีนี้
หากเป็นเช่นนั้นให้ลองทำเช่นนี้ (ท่ามกลางทางเลือกอื่น ๆ )
select [Month.Year] = STUFF(CONVERT(varchar(10), GETDATE(),104),1,3,'')
ฐานข้อมูลบางส่วนเช่นMS ACCESS
หรือRODBC
อาจไม่รองรับSQL SERVER
ฟังก์ชัน แต่สำหรับฐานข้อมูลใด ๆ ที่มีFORMAT
ฟังก์ชันคุณสามารถทำได้:
SELECT FORMAT(<your-date-field>,"YYYY-MM") AS year-date FROM <your-table>
RIGHT(CONVERT(VARCHAR(10), reg_dte, 105), 7)
CONCAT (datepart (yy,DATE), FORMAT (DATE,'MM'))
ให้คุณเช่น 201601 หากคุณต้องการผลลัพธ์หกหลัก
ลองทำตามนี้
select to_char(DATEFIELD,'MON') from YOUR_TABLE
เช่น.
select to_char(sysdate, 'MON') from dual
ลองสิ่งนี้:
โปรตุเกส
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)
ผลลัพธ์: พฤษภาคม 2562
หากคุณต้องการเป็นภาษาอื่นให้เปลี่ยน " pt-pt " หรือ " en-US " เป็นภาษาใดก็ได้ในลิงก์
ลอง SELECT CONCAT(month(datefield), '.', year(datefield)) FROM YOURTABLE;
เลือก CONCAT (MONTH (GETDATE ()), ".", YEAR (GETDATE ()))
เอาต์พุต: 5.2020
เลือก CONCAT (DATENAME (MONTH, GETDATE ()), ".", YEAR (GETDATE ()))
ผลผลิต: พฤษภาคม 2020
ฉันมีข้อกำหนดเฉพาะในการทำสิ่งที่คล้ายกันซึ่งจะแสดงเดือน - ปีซึ่งสามารถทำได้ดังต่อไปนี้:
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 * FROM table WHERE SUBSTR(datetime_column, starting_position, number_of_strings)=required_year_and_month;
ตัวอย่างเช่น:
SELECT SUBSTR(created, 1,7) FROM table;
ส่งคืนปีและเดือนในรูปแบบ "yyyy-mm"
รับเดือนและปีจากวันที่
DECLARE @lcMonth nvarchar(10)
DECLARE @lcYear nvarchar(10)
SET @lcYear=(SELECT DATEPART(YEAR,@Date))
SET @lcMonth=(SELECT DATEPART(MONTH,@Date))
SELECT REPLACE(RIGHT(CONVERT(VARCHAR(11), GETDATE(), 106), 8), ' ', '-')
ผลผลิต: มี.ค. -2562
คำถาม: - Select datename(m,GETDATE())+'-'+cast(datepart(yyyy,GETDATE()) as varchar) as FieldName
ผลผลิต: - มกราคม -2562
วันที่ทั่วไปที่เราสามารถใช้ได้
datename(m,<DateField>)+' '+cast(datepart(yyyy,<DateField>) as varchar) as FieldName
สำหรับผลลัพธ์: "YYYY-MM"
SELECT cast(YEAR(<DateColumn>) as varchar) + '-' + cast(Month(<DateColumn>) as varchar)
select convert(varchar(11), transfer_date, 106)
ทำให้ฉันได้ผลลัพธ์ที่ต้องการของวันที่ในรูปแบบวันที่ 07 Mar 2018
คอลัมน์ของฉัน 'transfer_date' เป็นคอลัมน์ประเภทวันที่และเวลาและฉันใช้ SQL Server 2017 บนสีฟ้า