【问题标题】:SQL Server Date conversion issue : yyyy-mm-dd should become as dd-mm-yyyy through querySQL Server 日期转换问题:yyyy-mm-dd 应通过查询变为 dd-mm-yyyy
【发布时间】:2016-07-04 15:02:21
【问题描述】:

我有一个日期列,其中日期格式为

2016-07-24

现在在 SQL Server 中。有没有办法将日期格式检索为

24-07-2016

通过选择语句? 而我目前正在使用这个查询

Convert(varchar(10),CONVERT(date,event_enddate,105),126) as "end"

我在这里错过了什么?

【问题讨论】:

  • 日期列没有格式!如果您的日期类型为 char 列,则应将其转换
  • @Jens,我们可以使用 convert 函数来格式化
  • event_enddate 列的数据类型是什么?
  • 目标样式dd-mm-yyyy是时间样式105。所以我想你应该把126放在里面,把105放在外面

标签: sql sql-server date


【解决方案1】:
SELECT REPLACE(CONVERT(VARCHAR(10), CAST(event_enddate AS DATE),103), '/', '-') AS [end]

SELECT CONVERT(VARCHAR(10), CAST(event_enddate AS DATE), 105) AS [end]

将返回您预期的格式。

为您的别名添加方括号 [ ] 而不是双引号 " "


使用 GETDATE() 执行示例:Reference

SELECT CONVERT(VARCHAR(10), CAST(GETDATE() AS DATE),105) AS [end]

输出:

04-07-2016

【讨论】:

  • 有点矫枉过正。其实不是真的有点:)
  • MSDN 提供了直接转换日期值的函数。我认为你不需要 REPLACE。
  • @MincongHuang:是的,我错过了。感谢通知。
  • @Arulkumar,我收到这样的错误,关键字“AS”附近的语法不正确。
  • @Keynes:它返回正确的数据。检查fiddler
【解决方案2】:

您在寻找以下内容吗?

SELECT convert(varchar, getdate(), 105)

其他格式请查看this

【讨论】:

  • CONVERT(date,event_enddate,105),105) 作为“结束”,我应该这样做吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-27
  • 1970-01-01
  • 1970-01-01
  • 2020-06-22
  • 1970-01-01
  • 2023-03-26
  • 1970-01-01
相关资源
最近更新 更多