Tôi cần tháng + năm từ ngày giờ trong SQL Server như 'Jan 2008'. Tôi đang nhóm truy vấn theo tháng, năm. Tôi đã tìm kiếm và tìm thấy các chức năng như datepart, chuyển đổi, vv, nhưng không ai trong số họ có vẻ hữu ích cho việc này. Am i thiếu cái gì ở đây? Có chức năng cho việc này không?Nhận tháng và năm từ một ngày giờ trong SQL Server 2005
Trả lời
Nếu bạn muốn bạn trở lại làm chuỗi, ở định dạng đó;
SELECT
CONVERT(CHAR(4), date_of_birth, 100) + CONVERT(CHAR(4), date_of_birth, 120)
FROM customers
Tôi đã thử sử dụng CONVERT (CHAR (4), GetDate(), 100) trên SQL Server của mình và thay vào đó tôi nhận được "09 1". Tôi nhận được không gian và một "1" cho 17. sử dụng "chọn CONVERT (varchar, GetDate(), 100)" lợi nhuận "09 17 2009 4:59 PM" – Nap
Thật kỳ lạ - từ tài liệu tôi liên kết đến, 100 nên trả lại một chữ viết tắt tháng ba chữ cái và một dấu cách, nếu được nhập vào một CHAR (4). Nhưng sau đó, kết quả bạn đã đăng cho một CONVERT (varchar, getdate(), 100) trông khác với những gì tôi mong đợi để xem. Bạn đang sử dụng phiên bản SQLServer nào? Bạn đang sử dụng cài đặt bản địa hóa/quốc tế hóa nào (điều này không quan trọng đối với định dạng 100). – robsoft
Định dạng đó không tồn tại. Bạn cần phải kết hợp hai điều,
select convert(varchar(4),getdate(),100) + convert(varchar(4),year(getdate()))
select
datepart(month,getdate()) -- integer (1,2,3...)
,datepart(year,getdate()) -- integer
,datename(month,getdate()) -- string ('September',...)
Vì vậy, tôi nghĩ rằng đây là những gì tôi muốn, nhưng tôi không thấy làm thế nào TSQL sẽ hiểu sự khác biệt giữa 'datepart (tháng, getdate())' và 'datepart (năm, getdate())'. ** tháng ** và ** năm ** là gì? – jp2code
@ jp2code ** tháng ** và ** năm ** về cơ bản là các hằng số được định nghĩa tại đây: http://msdn.microsoft.com/en-us/library/ms174420.aspx. TSQL hiểu chúng giống như cách bạn làm, bằng cách đọc chúng :) –
LOL - Cảm ơn Zach. Tôi đóng vai chính ở đó một thời gian dài trước khi tìm ra trên một trang web khác. – jp2code
(Month(Created) + ',' + Year(Created)) AS Date
Funny, tôi chỉ chơi xung quanh văn bản truy vấn này cùng ra trong SQL Server và sau đó 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
Nó tạo ra lượng ouput sau (ví dụ).
Month | Year | Total
January | 2009 | 2
tôi đã cùng một vấn đề và sau khi nhìn xung quanh Tôi thấy điều này:
SELECT DATENAME(yyyy, date) AS year
FROM Income
GROUP BY DATENAME(yyyy, date)
Nó làm việc tuyệt vời!
Làm thế nào về điều này?
Select DateName(Month, getDate()) + ' ' + DateName(Year, getDate())
Có, bạn có thể sử dụng datename(month,intime)
để nhận tháng bằng văn bản.
Sử dụng:
select datepart(mm,getdate()) --to get month value
select datename(mm,getdate()) --to get name of month
Các công trình sau đây một cách hoàn hảo! Tôi chỉ sử dụng nó, hãy thử nó.
date_format(date,'%Y-%c')
đây không phải là chức năng máy chủ sql hợp lệ hoặc tuyên bố –
Chuyển đổi ngày sang tháng đầu tiên cho phép bạn nhóm theo thứ tự theo một thuộc tính duy nhất và trải nghiệm của tôi nhanh hơn.
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))
cho "2006-04" định dạng
cách tốt nhất để làm điều đó là với:
dateadd(month,datediff(month,0,*your_date*),0)
nó sẽ giữ kiểu datetime bạn
Đây là câu trả lời hay nhất cho việc buộc bất kỳ ngày nào chỉ là tháng và năm, bỏ qua các thành phần ngày và giờ. Tốt hơn nhiều so với câu trả lời được chấp nhận vì thông tin có thể được sắp xếp chính xác và hoạt động chính xác như một ngày trong các công cụ báo cáo hạ lưu. –
Bắt đầu với SQL Server 2012, bạn có thể sử dụng:
SELECT FORMAT(@date, 'yyyyMM')
Vâng chơi sir ... này trả lời câu hỏi của tôi trong năm 2012 –
Tôi vui vì tôi đã cuộn này đến nay, điều này gọn gàng và đơn giản. Cảm ơn! – Niklas
Đây là một đóng góp có giá trị nhưng nó phải được trả lời ở nơi khác, http://stackoverflow.com/a/43196370/124486 –
Câu hỏi đặt ra là về SQL Server 2005, nhiều câu trả lời ở đây dành cho phiên bản SQL Server sau.
select convert (varchar(7), getdate(),20)
--Typical output 2015-04
SQL Server 2005 không có ngày chức năng which was introduced in SQL Server 2008
,datename(month,(od.SHIP_DATE)) as MONTH_
Trả lời: MONTH_ tháng một tháng một Tháng Chín Tháng Mười Tháng Mười Hai Tháng Mười Tháng Chín
Trong SQL Server 2012, dưới đây có thể được sử dụng
chọn FORMAT (getdate(), 'MMM yyyy')
này mang lại cho chính xác "Tháng 6 năm 2016"
lợi nhuận tên đầy đủ tháng, -, đầy đủ năm ví dụ March-2017
CONCAT(DATENAME(mm, GetDate()), '-', DATEPART(yy, GetDate()))
Đã có 18 câu trả lời khác cho câu hỏi này. Câu trả lời của bạn có thêm thông tin mới nào? – stannius
Nó hoạt động rất tốt.
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. Nhận ngày giờ từ năm, ngày trong năm và giờ trong SQL Server 2008 R2
- 2. Lấy Năm/Tháng/Ngày từ một ngày giờ trong php?
- 3. Sử dụng SQL Server 2008 và SQL Server 2005 và ngày giờ
- 4. Trích xuất giờ từ một DateTime (SQL Server 2005)
- 5. SQL Server 2005 Nhận ngày đầu tiên và cuối cùng cho bất kỳ tháng nào trong bất kỳ năm nào
- 6. Tạo ngày giờ trong Rails bằng tháng, ngày và năm
- 7. LINQ: Nhóm theo tháng và năm trong trường ngày giờ
- 8. Lưu trữ chỉ tháng và năm trong SQL Server 2008?
- 9. Cách nhận năm và tháng kể từ ngày - PHP
- 10. Định dạng ngày giờ cho tháng và năm
- 11. Nhận chi tiết ngày (ngày, tháng, năm) trong GWT
- 12. SQL - Nhận Ngày Số Tháng/Quý
- 13. Làm thế nào để trích xuất năm, tháng, ngày, giờ và phút từ một DateTimeField?
- 14. Trừ một số giờ, ngày, tháng hoặc năm nhất định từ ngày
- 15. Định dạng ngày giờ Ngày trong năm
- 16. Nhận hàng nơi datetime column = ngày nay - SQL server Noob
- 17. Làm cách nào để nhận được số ngày trong tháng cho tháng và năm cụ thể?
- 18. javascript: nhận tháng/năm/ngày từ dấu thời gian unix
- 19. Chuyển đổi cột từ ngày sang ngày giờ Sql Server
- 20. Cách trích xuất năm, tháng, ngày, giờ, phút, giây kể từ ngày mysql?
- 21. SQL Server: chuyển đổi ((int) năm, (int) tháng, (int) ngày) để Datetime
- 22. ngày tháng trước năm 1970
- 23. Nhận năm và tuần trong năm từ ngày PHP() khi tuần kéo dài hai năm
- 24. Cách chọn ngày/tháng và năm từ jquery datepicker
- 25. Cách tính giờ datetime địa phương từ ngày giờ utc trong tsql (sql 2005)?
- 26. Tôi làm cách nào để nhóm theo tháng và năm khi chỉ có trường ngày giờ?
- 27. Tìm kiếm giữa ngày và giờ trong SQL Server 2008
- 28. Chuyển đổi dữ liệu trong năm tháng giờ ngày và phút cho đến nay trong R
- 29. Trừ ngày/tháng/năm từ đối tượng Ngày
- 30. Django: Nhóm theo ngày (ngày, tháng, năm)
@Evan Carroll - điều này có cấu thành việc chiếm đoạt câu hỏi không? Nếu bạn có một câu trả lời cao hơn cho câu hỏi, nó không nên được cung cấp như một câu trả lời cho câu hỏi thay vì chỉ mọi người đến một câu hỏi khác? – STLDeveloper
@STLDhiển thị cách thức tấn công. Câu hỏi đặt ra cho năm 2005? Tôi đã không đặt nó ở đó. Tôi không tìm kiếm năm 2005. Thật không may, câu trả lời hay nhất ở đây không hoạt động vào năm 2005, rõ ràng là năm 2012. Tôi có nên downvote câu trả lời năm 2005 để được cổ xưa? –
@STLDrên thực tế, tôi không quan tâm ở đây. =) lập trường chính thức của tôi luôn hướng dẫn mọi người sử dụng PostgreSQL, không chắc tại sao tôi lại cố gắng giúp đỡ. –