将SQL日期键设置为正常日期

将SQL日期键设置为正常日期,sql,sql-server,Sql,Sql Server,我有一个SQL日期键,看起来像这样 YYYYMMDD 这是使用 Convert(varchar,[ModifiedOn],112)) 但是,我希望此字段在视图中显示英国的正常日期格式为DD-MM-YYYY 我该怎么做呢 谢谢。只要尝试CONVERT(VARCHAR(10),CAST(YourStringDate AS DATE),105) 由于日期值YYYYMMDD似乎是一个所谓未分离格式的字符串(而不是BIGINT),SQL Server将隐式地将此字符串转换为dateCONVERT与10

我有一个SQL日期键,看起来像这样

YYYYMMDD
这是使用

Convert(varchar,[ModifiedOn],112))
但是,我希望此字段在视图中显示英国的正常日期格式为DD-MM-YYYY

我该怎么做呢

谢谢。

只要尝试
CONVERT(VARCHAR(10),CAST(YourStringDate AS DATE),105)

由于日期值
YYYYMMDD
似乎是一个所谓未分离格式的字符串(而不是
BIGINT
),SQL Server将隐式地将此字符串转换为
date
CONVERT
与105一起将按您所需的方式格式化

从SQL Server 2012开始,有
FORMAT()
。您可以使用以下选项:

SELECT FORMAT(CAST(YourStringDate AS DATE),'dd-MM-yyyy')
只需尝试
CONVERT(VARCHAR(10),CAST(YourStringDate为DATE),105)

由于日期值
YYYYMMDD
似乎是一个所谓未分离格式的字符串(而不是
BIGINT
),SQL Server将隐式地将此字符串转换为
date
CONVERT
与105一起将按您所需的方式格式化

从SQL Server 2012开始,有
FORMAT()
。您可以使用以下选项:

SELECT FORMAT(CAST(YourStringDate AS DATE),'dd-MM-yyyy')

一种方法省去了日期,只使用字符串算术:

select (right(ModifiedOn, 2) + '-' +
        substring(ModifiedOn, 3, 2) + '-' +
        left(ModifiedOn, 4)
       ) as mmddyyyy

一种方法省去了日期,只使用字符串算术:

select (right(ModifiedOn, 2) + '-' +
        substring(ModifiedOn, 3, 2) + '-' +
        left(ModifiedOn, 4)
       ) as mmddyyyy
一种方法是向数据库中添加一个

日期表可以方便地选择预先计算的格式,供您切换

它们也是有用的聚合目标(
GROUP BY DATENAME(季度,CAST(DateKey AS DATE))
Vs
GROUP BY DimDate。[Quater]

包含:

DateKey     [Date]      [Year]  [Quater]    [DD_MM_YYYY]
--------------------------------------------------------
20160101    2016-01-01  2016    Q1          01-01-2016
20160102    2016-01-02  2016    Q1          02-01-2016
...
20161231    2016-12-31  2016    Q4          31-12-2016
有一个反对在数据库中设置格式的论点。Proponants会告诉您,格式化是一种表面操作,最好在表示层中执行。他们说,你的数据库应该只存储冷酷的事实。就我个人而言,我不太确定。我同意SQL不是用于格式化的最佳语言,但有时它是唯一起作用的语言。

一种方法是向数据库中添加一个

日期表可以方便地选择预先计算的格式,供您切换

它们也是有用的聚合目标(
GROUP BY DATENAME(季度,CAST(DateKey AS DATE))
Vs
GROUP BY DimDate。[Quater]

包含:

DateKey     [Date]      [Year]  [Quater]    [DD_MM_YYYY]
--------------------------------------------------------
20160101    2016-01-01  2016    Q1          01-01-2016
20160102    2016-01-02  2016    Q1          02-01-2016
...
20161231    2016-12-31  2016    Q4          31-12-2016

有一个反对在数据库中设置格式的论点。Proponants会告诉您,格式化是一种表面操作,最好在表示层中执行。他们说,你的数据库应该只存储冷酷的事实。就我个人而言,我不太确定。我同意SQL不是用于格式化的最佳语言,但有时它是唯一的语言。

列数据类型?它是varchar(10)为什么不直接使用modifiedOn列而不是使用中间格式?这个问题解决了吗?你需要进一步的帮助吗?请允许我一个提示:如果这个问题得到解决,您将非常感谢,在(最佳)答案的投票柜台下方勾选接受检查。这将1)将此问题标记为已解决2)使追随者更容易找到最佳解决方案3)向回答者支付积分,4)向您支付积分。因为你自己已经越过了15点的边界,你被要求对捐款进行投票。这就是说谢谢的方式。快乐编码!列数据类型?它是一个varchar(10)为什么不直接使用modifiedOn列而不是使用中间格式?这个问题解决了吗?你需要进一步的帮助吗?请允许我一个提示:如果这个问题得到解决,您将非常感谢,在(最佳)答案的投票柜台下方勾选接受检查。这将1)将此问题标记为已解决2)使追随者更容易找到最佳解决方案3)向回答者支付积分,4)向您支付积分。因为你自己已经越过了15点的边界,你被要求对捐款进行投票。这就是说谢谢的方式。快乐编码!