在SQL中,如果为null,如何将日期字段转换为字符串?

时间:2012-12-20 09:07:11

标签: sql date select sql-server-2008-r2 case

我想在SQL Server 2008 R2中编写一个SQL查询,在日期为NULL时将日期转换为字符串。例如......

    Date                            ShipmentRef     RecieptNo
    2009-01-01 03:12:11.596         DS298-YYY       18060
                                    FM298-YYY       95464
    2010-11-11 08:33:55.974         IL298-YYY       56703
    2003-08-01 07:00:44.846         UI835-XYX       40264
                                    US655-YXY       34643
    2004-03-07 12:46:33.352         WE242-XXX       83755

以上数据只是我当前数据的示例表。当我运行SELECT查询时,我希望它返回如下数据:

    Date                            ShipmentRef     RecieptNo
    2009-01-01 03:12:11.596         DS298-YYY       18060
    InsertRandomStringHere          FM298-YYY       95464
    2010-11-11 08:33:55.974         IL298-YYY       56703
    2003-08-01 07:00:44.846         UI835-XYX       40264
    InsertRandomStringHere          US655-YXY       34643
    2004-03-07 12:46:33.352         WE242-XXX       83755

我不确定哪个更好,CASE或CONVERT。非常感谢您给予我的任何帮助。

5 个答案:

答案 0 :(得分:7)

假设SQL-Server:

SELECT ISNULL(CONVERT(nVarChar(30), Date, 121), 'InsertRandomStringHere') 

DEMO

CAST and CONVERT (Transact-SQL)

答案 1 :(得分:4)

COALESCE(datefield, 'InsertRandomStringHere')

(尽管其他人指出,对于某些DBMS,您可能需要执行其他类型转换操作)。

答案 2 :(得分:1)

试试这个。这是w.r.to mysql

select if(Date <> '',Date,'xxxxxxx'),ShipmentRef,RecieptNo from table

答案 3 :(得分:1)

这取决于你想要达到的目的。

列中的每个值必须是相同的类型(至少在MS-SQL中),因此如果您想要“随机字符串”,Date列中的所有值都必须是VARCHAR类型如果是NULL日期。

然后像:

SELECT CAST(COALESCE(GETDATE(), 'InsertRandomStringHere') AS VARCHAR) AS DATE
UNION
SELECT CAST(COALESCE(NULL, 'InsertRandomStringHere') AS VARCHAR)

应该有用。

但是,如果您的应用中的Date列中的值(如果有应用)在线路的另一端很难读取。

答案 4 :(得分:0)

SELECT ISNULL(Date, 'InsertRandomStringHere') AS Date
FROM Table