【问题标题】:select date in form dd/mm/yyyy in sql query在 sql 查询中以 dd/mm/yyyy 形式选择日期
【发布时间】:2014-02-11 08:20:25
【问题描述】:

在我得到的数据库表中:

int day
int month
int year

我想写一个选择查询来显示日期:dd/mm/yyyy

我试过了,但没用:

1-

select (day + '\' + month + '\' + year) as xdate from table1

但是给我一个错误

2-

select (day + '-' + month + '-' + year) as xdate from table1

它返回这些字段的总和:2036 而不是 21/1/2014

有什么办法吗?

【问题讨论】:

  • sql server,mysql,other?
  • 您使用的是什么 DBMS?
  • 你能用sqlfiddle重现这个问题吗?
  • 如果您期望select (day + '/' + month + '/' + year) as xdate from table1,为什么要写select (day + '\' + month + '\' + year) as xdate from table1? ` \ ` 是转义字符。

标签: sql-server tsql string-concatenation


【解决方案1】:

试试这样的:

select (cast(day as varchar(2)) + '/' 
    + cast(month as varchar(2)) + '/' 
    + cast(year as varchar(4))) as xdate 
from table1

【讨论】:

    【解决方案2】:

    如果是 TSQL / SQL-SERVER,那么 + 只能用于连接 字符串...在这种情况下,请对您的数字进行一些转换:

    select
       CONVERT(VARCHAR, day) + '\' + CONVERT(VARCHAR, month) + '\' ... etc.
    

    【讨论】:

      【解决方案3】:

      由于你将 int 转换为 Varchar,所以你需要使用 CAST 或 CONVERT 函数

      CAST and CONVERT

      这样试试

      select (Cast(day AS Varchar(10)) + '\' + Cast(month AS Varchar(10)) + '\' + Cast(year AS Varchar(10))) as xdate from table1
      

      (或)

      select (Cast(day AS Varchar(10)) + '-' + Cast(month AS Varchar(10)) + '-' + Cast(year AS Varchar(10))) as xdate from table1
      

      【讨论】:

        【解决方案4】:

        CONVERT(date, , 103) 将日期转换为 dd/mm/yyyy 形式的字符串表示

        SELECT CONVERT(date,DATEFROMPARTS([year],[month],[day]),103)
        

        【讨论】:

          猜你喜欢
          • 2012-05-25
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-01-02
          • 1970-01-01
          • 2016-07-24
          • 2012-02-14
          相关资源
          最近更新 更多