【问题标题】:sql combining two columns one of which is a datetimesql结合两列,其中一列是日期时间
【发布时间】:2013-04-25 12:53:37
【问题描述】:

我有以下 sql 代码(ms sql server 2008)

select (analysisno + ' ' + '-' + ' ' + description + ' ' + '-' + ' ' + formdate) as columnA 

来自 Old_Analysis_Data 按格式排序

我收到以下错误从字符串转换日期和/或时间时转换失败。

AnalysisNo 是 varchar(10) 描述是一个 varchar(500) formdate 是日期时间 (不是我的桌子,是旧的)

任何想法,在谷歌上找不到答案。

【问题讨论】:

  • 您很可能需要使用 TO_CHAR 函数将日期转换为 varchar,具体取决于您使用的 SQL 的风格。

标签: sql sql-server-2008 datetime


【解决方案1】:

在连接之前使用 Convert 将时间转换为字符串:

SELECT ( analysisno + ' ' + '-' + ' ' + description + ' ' + '-' + ' ' 
     + CONVERT(VARCHAR(20), formdate, 100) ) AS columnA 
FROM 
     Old_Analysis_Data 
ORDER BY 
     formdate

在这种情况下,100 是一种将日期戳格式设置为 mon dd yyyy hh:miAM(或 PM)作为示例的样式

http://www.w3schools.com/sql/func_convert.asp

【讨论】:

  • 现场欢呼,我将 100 改为 105 以获得我需要的东西
【解决方案2】:

试试这个:

select (analysisno + ' - ' + description + ' - ' 
+ convert(varchar(100),formdate)) as columnA
from Old_Analysis_Data order by formdate

【讨论】:

  • 查询没有错误,但日期格式必须是 25/04/2013 最好
【解决方案3】:

不要直接串联formdate,而是先转成字符串,

convert(varchar(15), formdate, 103)

它为您提供以下格式

dd/MM/yyyy

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-10-22
    • 2017-04-22
    • 2019-03-01
    • 2017-02-07
    • 1970-01-01
    • 1970-01-01
    • 2023-02-07
    • 1970-01-01
    相关资源
    最近更新 更多