将 SQL 十进制日期转换为 DD-MM-YYYY HH:MM:SS 格式
Converting SQL Decimal Date to DD-MM-YYYY HH:MM:SS format
我的数据库中有一个日期/时间字段,类型设置为 'decimal'。
使用以下查询查询日期/时间字段时:
SELECT my_date_time_field
FROM my_table
它returns结果如下(一个例子):
1323977278
这意味着表示以下日期和时间(英国日期格式):
30/11/2011 02:50:19 AM
我被告知我从数据库中得到的结果是自以下时间以来经过了多少秒:
01-JAN-1970 00:00:00
我想知道如何让我的 SQL 查询结果以正确的英国日期格式显示日期。
我尝试了以下方法,但在类似问题中没有成功:
CONVERT(DATETIME, CAST(my_date_time_field AS VARCHAR(8)), 112)
在执行 DATEDIFF[= 之前,我是否应该先将 my_date_time_field 转换为 YYYYMMDDHHMMSS 格式41=]函数?
或者是否有函数将 my_date_time_field 直接转换为 DD-MMM-YYYY HH:MM:SS 或 DD-MM-YYYY HH:MM:SS 格式?
您可以使用以下方法将该值转换为 datetime
:
select dateadd(second, 1323977278, '1970-01-01')
然后您可以使用 convert()
或 format()
.
格式化它
已编辑:
虽然下面的解释是最好的,但对于 SQL 2008,我会选择:
SELECT
CONCAT (CONVERT(VARCHAR, dateadd( S, 1323977278, '1970-01-01'), 103), ' ',
CONVERT(varchar(15),CAST(dateadd( S, 1323977278, '1970-01-01') AS TIME),100))
创建一个函数会很方便,因为我相信您会经常需要它。
CREATE FUNCTION Decimal_To_Date (
@ctimestamp BIGINT
)
RETURNS datetime
AS
BEGIN
declare @return datetime
SELECT @return = FORMAT(CAST(dateadd( S, @ctimestamp, '1970-01-01') AS DATETIME),'dd/mm/yyyy hh:mm tt')
return @return
END
GO
然后就把它当作
SELECT dbo.Decimal_To_Date(1323977278)
您将在 15/27/2011 07:27 PM
最终(如果你不想要一个函数)只需使用:
FORMAT(CAST(dateadd( S, 1323977278, '1970-01-01') AS DATETIME),'dd/mm/yyyy hh:mm tt')
PS:格式适用于 SQL Server 2012。如果您有以前的版本,则需要使用 CONVERT
PS2: 131 代码使用的不是您想要的 Hijiri(公历)日历...
我的数据库中有一个日期/时间字段,类型设置为 'decimal'。
使用以下查询查询日期/时间字段时:
SELECT my_date_time_field
FROM my_table
它returns结果如下(一个例子):
1323977278
这意味着表示以下日期和时间(英国日期格式):
30/11/2011 02:50:19 AM
我被告知我从数据库中得到的结果是自以下时间以来经过了多少秒:
01-JAN-1970 00:00:00
我想知道如何让我的 SQL 查询结果以正确的英国日期格式显示日期。
我尝试了以下方法,但在类似问题中没有成功:
CONVERT(DATETIME, CAST(my_date_time_field AS VARCHAR(8)), 112)
在执行 DATEDIFF[= 之前,我是否应该先将 my_date_time_field 转换为 YYYYMMDDHHMMSS 格式41=]函数?
或者是否有函数将 my_date_time_field 直接转换为 DD-MMM-YYYY HH:MM:SS 或 DD-MM-YYYY HH:MM:SS 格式?
您可以使用以下方法将该值转换为 datetime
:
select dateadd(second, 1323977278, '1970-01-01')
然后您可以使用 convert()
或 format()
.
已编辑:
虽然下面的解释是最好的,但对于 SQL 2008,我会选择:
SELECT
CONCAT (CONVERT(VARCHAR, dateadd( S, 1323977278, '1970-01-01'), 103), ' ',
CONVERT(varchar(15),CAST(dateadd( S, 1323977278, '1970-01-01') AS TIME),100))
创建一个函数会很方便,因为我相信您会经常需要它。
CREATE FUNCTION Decimal_To_Date (
@ctimestamp BIGINT
)
RETURNS datetime
AS
BEGIN
declare @return datetime
SELECT @return = FORMAT(CAST(dateadd( S, @ctimestamp, '1970-01-01') AS DATETIME),'dd/mm/yyyy hh:mm tt')
return @return
END
GO
然后就把它当作
SELECT dbo.Decimal_To_Date(1323977278)
您将在 15/27/2011 07:27 PM
最终(如果你不想要一个函数)只需使用:
FORMAT(CAST(dateadd( S, 1323977278, '1970-01-01') AS DATETIME),'dd/mm/yyyy hh:mm tt')
PS:格式适用于 SQL Server 2012。如果您有以前的版本,则需要使用 CONVERT
PS2: 131 代码使用的不是您想要的 Hijiri(公历)日历...