簡體   English   中英

SQL中的DATENAME和DATEPART

[英]DATENAME and DATEPART in SQL

我正在嘗試以“ YYYY_m”格式獲取我的EntryDate列,例如“ 2013_04”。

該代碼未成功

DATENAME (YYYY, EntryDate) + '_' + DATEPART (M, EntryDate) 

使用DATEFORMAT的嘗試也沒有成功,指出在M之后的','處存在語法錯誤。什么代碼可以代替呢?

謝謝。

select DATENAME (YYYY, EntryDate) 
      + '_' 
      + right('0' + convert(varchar(2),datepart (MM, EntryDate)), 2)

您必須將DATEPART()的結果轉換為字符串,才能使+執行附加操作。

僅供參考-將來,“不成功”並不意味着任何事情。 下次發布您收到的實際錯誤。

date_format()怎么樣?

select date_format(EntryDate, '%&Y_%m')

這是MySQL的方式。 您的代碼看起來像是在SQL Server中執行此操作的嘗試。

編輯:

以下應在SQL Server中工作:

select DATENAME(year, EntryDate) + '_' + RIGHT('00' + DATEPART(month, EntryDate), 2)

就個人而言,我可能會使用convert()

select replace(convert(varchar(7), EntryDate, 121), '-', '_')

例如:

SELECT concat(EXTRACT(YEAR FROM '2015/1/1'), '_', 
         LPAD(extract(month from '2014/1/1'),2,'0')) AS OrderYear

這使用

  • 結合字符串
  • 如果月份是一位數字,則lpad放置前導0
  • 並使用摘錄選擇所需日期的一部分。

工作小提琴http://sqlfiddle.com/#!2/63b24/8

DATEPART這是一個Datetime函數,用於從日期中提取信息。 此函數始終以整數類型返回結果。

SELECT DATEPART(month, '2009-01-01 00:00:00:000') as month
it is return "1" as an integer:

DATENAME這也是另一個Datetime函數,用於從日期中提取信息。 此函數始終以varchar返回結果

SELECT DATENAME(month, '2009-01-01 00:00:00:000')  as month
it is return "January". 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM