首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >SQL中的DATENAME和DATEPART

SQL中的DATENAME和DATEPART
EN

Stack Overflow用户
提问于 2015-01-12 19:37:46
回答 4查看 1K关注 0票数 1

我正在尝试将我的EntryDate列设置为'YYYY_m‘格式,例如'2013_04’。

此代码未成功。

代码语言:javascript
运行
复制
DATENAME (YYYY, EntryDate) + '_' + DATEPART (M, EntryDate) 

使用DATEFORMAT的尝试也失败了,声称在M之后出现了语法错误,什么代码可以代替?

谢谢。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2015-01-12 19:46:32

date_format()怎么样?

代码语言:javascript
运行
复制
select date_format(EntryDate, '%&Y_%m')

这是MySQL的方式。您的代码看起来像是试图在Server中执行此操作。

编辑:

以下内容应适用于Server:

代码语言:javascript
运行
复制
select DATENAME(year, EntryDate) + '_' + RIGHT('00' + DATEPART(month, EntryDate), 2)

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

代码语言:javascript
运行
复制
select replace(convert(varchar(7), EntryDate, 121), '-', '_')
票数 1
EN

Stack Overflow用户

发布于 2015-01-12 19:46:05

代码语言:javascript
运行
复制
select DATENAME (YYYY, EntryDate) 
      + '_' 
      + right('0' + convert(varchar(2),datepart (MM, EntryDate)), 2)

您必须将DATEPART()的结果转换为字符串,这样+才能执行追加。

未来“不成功”并不意味着什么。下一次将收到的实际错误发布。

票数 1
EN

Stack Overflow用户

发布于 2015-01-12 19:45:58

例如:

代码语言:javascript
运行
复制
SELECT concat(EXTRACT(YEAR FROM '2015/1/1'), '_', 
         LPAD(extract(month from '2014/1/1'),2,'0')) AS OrderYear

这是用

  • 串接组合字符串
  • 如果月份为1位数,lpad将放置一个前导0。
  • 并使用提取的部分来挑选所需的日期。

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27909453

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档