SQL 中的 DATENAME 和 DATEPART
DATENAME and DATEPART in SQL
我正在尝试以这种格式获取我的 EntryDate 列 'YYYY_m' 例如“2013_04”。
此代码未成功
DATENAME (YYYY, EntryDate) + '_' + DATEPART (M, EntryDate)
使用 DATEFORMAT 的尝试也没有成功,指出在 M 之后的“,”处存在语法错误。可以用什么代码代替?
谢谢。
例如:
SELECT concat(EXTRACT(YEAR FROM '2015/1/1'), '_',
LPAD(extract(month from '2014/1/1'),2,'0')) AS OrderYear
这使用
- concat 组合字符串
- 如果月份是一位数字,lpad 放置前导 0
- 并使用 extract 来挑选所需日期的部分。
工作fiddle
http://sqlfiddle.com/#!2/63b24/8
select DATENAME (YYYY, EntryDate)
+ '_'
+ right('0' + convert(varchar(2),datepart (MM, EntryDate)), 2)
您必须将 DATEPART()
的结果转换为字符串,以便 +
执行追加。
仅供参考 - 将来 "unsuccessful" 没有任何意义。下次 post 您收到的实际错误。
date_format()
怎么样?
select date_format(EntryDate, '%&Y_%m')
这是MySQL方式。您的代码看起来像是在 SQL 服务器中执行此操作的尝试。
编辑:
以下应在 SQL 服务器中工作:
select DATENAME(year, EntryDate) + '_' + RIGHT('00' + DATEPART(month, EntryDate), 2)
就个人而言,我可能会使用 convert()
:
select replace(convert(varchar(7), EntryDate, 121), '-', '_')
日期部分
它是一个从日期中提取信息的日期时间函数。此函数总是 returns 结果为整数类型。
SELECT DATEPART(month, '2009-01-01 00:00:00:000') as month
it is return "1" as an integer:
日期名称
它也是另一个从日期中提取信息的日期时间函数。此函数总是 returns 结果为 varchar
SELECT DATENAME(month, '2009-01-01 00:00:00:000') as month
it is return "January".
我正在尝试以这种格式获取我的 EntryDate 列 'YYYY_m' 例如“2013_04”。
此代码未成功
DATENAME (YYYY, EntryDate) + '_' + DATEPART (M, EntryDate)
使用 DATEFORMAT 的尝试也没有成功,指出在 M 之后的“,”处存在语法错误。可以用什么代码代替?
谢谢。
例如:
SELECT concat(EXTRACT(YEAR FROM '2015/1/1'), '_',
LPAD(extract(month from '2014/1/1'),2,'0')) AS OrderYear
这使用
- concat 组合字符串
- 如果月份是一位数字,lpad 放置前导 0
- 并使用 extract 来挑选所需日期的部分。
工作fiddle http://sqlfiddle.com/#!2/63b24/8
select DATENAME (YYYY, EntryDate)
+ '_'
+ right('0' + convert(varchar(2),datepart (MM, EntryDate)), 2)
您必须将 DATEPART()
的结果转换为字符串,以便 +
执行追加。
仅供参考 - 将来 "unsuccessful" 没有任何意义。下次 post 您收到的实际错误。
date_format()
怎么样?
select date_format(EntryDate, '%&Y_%m')
这是MySQL方式。您的代码看起来像是在 SQL 服务器中执行此操作的尝试。
编辑:
以下应在 SQL 服务器中工作:
select DATENAME(year, EntryDate) + '_' + RIGHT('00' + DATEPART(month, EntryDate), 2)
就个人而言,我可能会使用 convert()
:
select replace(convert(varchar(7), EntryDate, 121), '-', '_')
日期部分 它是一个从日期中提取信息的日期时间函数。此函数总是 returns 结果为整数类型。
SELECT DATEPART(month, '2009-01-01 00:00:00:000') as month
it is return "1" as an integer:
日期名称 它也是另一个从日期中提取信息的日期时间函数。此函数总是 returns 结果为 varchar
SELECT DATENAME(month, '2009-01-01 00:00:00:000') as month
it is return "January".