【问题标题】:Converting Year Day Month to Month Day将年月日转换为月日
【发布时间】:2016-12-02 12:29:34
【问题描述】:

想知道是否有人可以帮助解决我在 SQL Server 中遇到的问题。

以下是我尝试将日期从 2016-09-01 更改为 September 01 等的内容。

我在尝试转换日期时收到一条错误消息。

set @start_date = '2016-09-01'
set @end_date = '2016-11-21'

SELECT pol AS [Policy], 
DATENAME(MONTH, pol_dt) + ' ' + CAST(DATEPART(DAY, pol_dt)AS VARCHAR(2)) AS [Policy Date]
from pol_t
where pol_dt>= @start_date
and pol_dt<= @end_date

【问题讨论】:

  • 哪个 SQL Server 版本?
  • pol_dt的类型是什么?它应该是datedatetime。您确定问题出在 SELECT 子句而不是 WHERE 子句中的隐式转换?将变量的类型更改为日期并使用明确的格式分配值,例如:declare @start_date date='20160901'

标签: sql-server date


【解决方案1】:

IF 2012+ 你可以使用格式

Declare @D Date='2016-09-01'
Select Format(@D,'MMMM dd')

返回

September 01

Format() 有一些很棒的功能,但它的性能并不为人所知

【讨论】:

  • 鉴于 2012 是最早受支持的版本,因此此答案适用于所有受支持的 SQL Server 版本
  • @PanagiotisKanavos 非常正确,但我仍然对 2008 年及以下的问题数量感到震惊。
【解决方案2】:

试试这个……

SELECT DATENAME(MONTH, SYSDATETIME())+ ' ' + RIGHT('0' + DATENAME(DAY, SYSDATETIME()), 2) AS [Month DD];

【讨论】:

  • 你改变了什么以及为什么改变了?为什么不格式化查询?更多信息:How to Answer
  • 欢迎不提
【解决方案3】:

第 1 个月

SELECT DATENAME(MM, GETDATE()) + ' ' + CAST(DAY(GETDATE()) AS VARCHAR(2)) AS [Month DD]

1 月 2 日

这是与 SQL Server 和日期格式相关的所有内容的绝佳链接。

http://www.sql-server-helper.com/tips/date-formats.aspx

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-04-29
    • 2017-04-06
    • 2013-07-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多