【问题标题】:Add 0 if day is lesser than 9 in sql如果 sql 中 day 小于 9,则添加 0
【发布时间】:2012-06-22 14:58:36
【问题描述】:

我有以下值:

Jun **6** 2012 12:00:00:000AM

我想要的是:

Jun **06** 2012 12:00:00:000AM

0 仅应在 day 的值小于 9 时加在前面。

我该怎么做?

【问题讨论】:

  • 用例声明。您正在使用什么数据库。
  • 您需要提供比这更多的上下文:什么是 RDBMS,什么是表定义,什么是返回字符串的查询,等等。
  • 哪个 Sql?这是 SELECT 的输出吗?
  • 您应该只使用适当的日期格式,例如。在 MySQL 中使用 %dDATE_FORMAT()
  • 日期类型没有以任何特定方式格式化。仅当您将它们转换为字符串时才使用格式。你在哪里做这个转换?在服务器上,客户端?

标签: sql datepart


【解决方案1】:

如果您使用的是 SQL Server,您可以这样做:

DECLARE @dt datetime = '1/1/2012'
SELECT CONVERT(VARCHAR(26), @dt, 107) + ' ' + CONVERT(VARCHAR(12), @dt, 114)

【讨论】:

    【解决方案2】:

    在任何数据库中,您都可以执行以下操作:

    (case when substring(val, 5, 1) = ' '
          then substring(val, 1, 4)||'0'+substring(val, 5, 1000)
          else val
     end)
    

    这会检查第 5 个字符是否为空格。如果是这样,则需要添加一个零。我假设“**”是为了强调而不是在字符串中。

    问题在于各种字符串运算符——子字符串和连接——往往因数据库而异。

    【讨论】:

      猜你喜欢
      • 2014-05-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-29
      • 2023-03-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多