【问题标题】:Displaying a CAST datetime in RFC822 Format以 RFC822 格式显示 CAST 日期时间
【发布时间】:2024-04-26 01:40:01
【问题描述】:

我想使用 RFC822 格式(例如:Fri, 19 Nov 2010 13:43:39)在 SQL 表中显示 CAST 日期时间,来自以下 SELECT(找到的较大语句的一部分 here

*_snip_*

,(Select Cast(Cast(FieldValue as nvarchar(max)) as DateTime) 
  from dbo.UserDefinedData where UserDefinedFieldId = 298 
  and UserDefinedRowId = item.UserDefinedRowId) as [pubDate] 

下面的 SQL 部分将以所需格式检索当前日期。

如何将其整合到上述陈述中(或者有更好的方法来实现我的目标)?

select left(datename(dw,getdate()),3)+', '+convert(varchar(20),getdate(),113)  

【问题讨论】:

    标签: sql datetime casting rfc822


    【解决方案1】:
    ,(Select left(datename(dw,cast(fieldvalue as nvarchar(50))),3)+', '+
         convert(varchar(20),cast(fieldvalue as nvarchar(50)),113)
      from dbo.UserDefinedData where UserDefinedFieldId = 298  
      and UserDefinedRowId = item.UserDefinedRowId) as [pubDate]  
    

    【讨论】:

    • [FieldValue] 是 ntext,我收到“操作数类型冲突:ntext 与日期时间不兼容”错误。 (我会事先提到它是 ntext,但我不熟悉数据类型关系。它来自 DotNetNuke 核心模块表,我希望尽可能避免更改数据类型)。
    • 查询成功执行,但由于某种原因它只更改了部分日期。 (“2010-04-03 00:00:00.000”变为“星期六,2010 年 4 月 3 日”,而“2010-04-10 00:00:00.000”变为“星期六,2010-04-10T00:00:00” )
    • "2010-04-03 00:00:00.000" 变为 "Sat, 2010-04-03 00:00:00." 和 "2010-04-10 00:00:00.000"变为“星期六,2010-04-10 00:00:00。”。这是 SQL Server,对吗?您确定值中没有其他内容吗?
    • SQL Server,是的。我正在查看表格,这些是完整的值。输出看起来不像 113 的事实也很奇怪。感谢您为此工作。
    • 运行这个:声明@fieldvalue varchar(500) set @fieldvalue='2010-04-10 00:00:00.000' Select left(datename(dw,cast(@fieldvalue as nvarchar(50) )),3)+', '+ 转换(varchar(20),cast(@fieldvalue as nvarchar(50)),113)