【问题标题】:Change date time format from YYY-MM-DD HH:MM:SS to YYYY.MM.DD HH:MM:SS in SQL Server在 SQL Server 中将日期时间格式从 YYYY-MM-DD HH:MM:SS 更改为 YYYY.MM.DD HH:MM:SS
【发布时间】:2020-09-27 04:37:17
【问题描述】:

我有一个表格,其中有一列RequestDate,格式如下2019-12-01 00:00:00:000。我想看到这样的结果:2019.12.01 00:00:00:000

我用过这个命令

SELECT CONVERT(char(10), RequestDate, 104) AS finaldate

从上面的查询中,我看到结果为 2019.12.01,但我错过了时间 (00:00:00:000) - 我如何才能跟上时间。我想要像2019.12.01 00:00:00:000这样的最终结果

【问题讨论】:

  • 我坚信所有的格式化都应该在表示层完成,而不是在 SQL 中,你应该将日期作为日期保留到最后可能的时刻,这样如果 SQL 和客户端之间的任何进程想要进行任何进一步的操作、排序或处理时区,而不必转换回日期(这本身可能有风险,2019.12.01 可能是 12 月 1 日或 1 月 12 日,具体取决于区域设置)跨度>
  • 如果您必须将日期转换为未指定为CONVERT 样式的其他格式,那么您始终可以使用FORMAT(),但请注意doesn't scale very well

标签: sql sql-server string tsql date


【解决方案1】:

我认为没有内置的格式说明符。但你可以这样做:

replace(convert(varchar, requestDate, 121), '-', '.')

121 为您提供YYYY-MM-DD HH:MM:SS.SSS 格式。然后,您可以将每次出现的'-' 替换为':'

请注意,这假设您有一个 datetime 数据类型开始。如果你有一个字符串,那么不需要convert(),你可以replace()

【讨论】:

  • 非常感谢……现在我看到了预期的格式,这对我有帮助……祝你有愉快的一天,先生。非常感谢
  • Bad habits to kick : declaring VARCHAR without (length) (我知道在这种情况下没有真正的缺点,但是看到这篇文章的其他人可能不知道 SQL Sever 如何处理无长度的 varchar 的内部规则)
猜你喜欢
  • 1970-01-01
  • 2020-03-07
  • 2015-11-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-19
  • 2018-10-28
  • 1970-01-01
相关资源
最近更新 更多