我使用Adobe Coldfusion 9.0.1和Microsoft SQL Server 2008 R2并在2008 Express上确认以下内容。我有两个表,我使用Coldfusion自己的SerializeJson函数将结果序列化为JavaScript变量。
CREATE TABLE [dbo].[event](
[id] [int] IDENTITY(1,1) NOT NULL,
[date1] [date] NULL,
[date2] [datetime] NULL,
[date3] [datetime2](7) NULL,
[status] [nchar](10) NULL
);
CREATE TABLE [dbo].[status](
[id] [int] IDENTITY(1,1) NOT NULL,
[text] [nvarchar](max) NULL,
);
我的第一个CFQuery看起来像
<cfquery name="qryprod" datasource="mssqlexpress">
SELECT e.id, date1, date2, date3
FROM event e
inner join status s
on e.status = s.id
WHERE e.id = <cfqueryparam cfsqltype="cf_sql_numeric" value="2">
</cfquery>
#SerializeJson( qryprod, true )#
所有三个日期都被序列化为:Februar, 27 2012 22:10:12
- 德语中的月份名称。
我的第二个查询:
<cfquery name="qryprod" datasource="mssqlexpress">
WITH subStatus AS (
SELECt id, text
FROM status
)
SELECT e.id, date1, date2, date3
FROM event e
inner join subStatus s
on e.status = s.id
WHERE e.id = <cfqueryparam cfsqltype="cf_sql_numeric" value="2">
</cfquery>
#SerializeJson( qryprod, true )#
date
的date1序列化为2012-02-27
datetime
的日期2被序列化为Februar, 27 2012 22:10:12
datetime2
的日期3看起来像2012-02-27 22:10:12.4400000
这是怎么发生的?我必须做些什么来始终以Monthname, day year
的形式获取我的日期?
最佳, 哈德
答案 0 :(得分:0)
您可能需要遍历查询结果,并手动将日期值更改为字符串。您可以使用ParseDateTime
和DateFormat
(或其本地化版本LSParseDateTime
和LSDateFormat
)来完成此操作。
答案 1 :(得分:0)
看一下T-SQL CONVERT函数。
SELECT e.id, CONVERT(varchar(15), date1, 107) AS date1...
上述格式代码将返回mon dd,yyyy格式。
如果您想要完整的月份名称,可以使用日期函数:
SELECT e.id,
(
DATENAME(month, date1) + ' ' +
CAST(DATEPART(d, date1) AS varchar(2)) + ', ' +
CAST(DATEPART(yyyy, date1) AS varchar(4))
) AS date1
...