SQL服务器在查询之前执行日期转换

时间:2016-09-23 10:03:39

标签: sql sql-server tsql date

我有一个应用程序,它以以下格式返回日期:" 2016年9月22日星期四"我想查询已存储的sql server数据库 日期格式为" 2016-09-06"。 SQL Server是否提供任何内置的转换功能(特别是3个字母的月份名称)? 请告诉我。

4 个答案:

答案 0 :(得分:0)

SQL Server具有有限的日期转换支持。这些在documentation中描述。

我认为这可以满足您的需求:

select convert(date, substring(col, 5, 6) + ',' + right(col, 5), 107)

我们的想法是将您的字符串转换为" 2016年9月22日"然后使用它进行转换。假设您的国际化格式设置为英语,那么这种方法应该可行。

答案 1 :(得分:0)

您可以使用FORMAT

示例:

DECLARE @d DATETIME = '10/01/2011';  
SELECT FORMAT ( @d, 'd', 'en-US' ) AS 'US English Result'  
      ,FORMAT ( @d, 'd', 'en-gb' ) AS 'Great Britain English Result'  
      ,FORMAT ( @d, 'd', 'de-de' ) AS 'German Result'  
      ,FORMAT ( @d, 'd', 'zh-cn' ) AS 'Simplified Chinese (PRC) Result';   

SELECT FORMAT ( @d, 'D', 'en-US' ) AS 'US English Result'  
      ,FORMAT ( @d, 'D', 'en-gb' ) AS 'Great Britain English Result'  
      ,FORMAT ( @d, 'D', 'de-de' ) AS 'German Result'  
      ,FORMAT ( @d, 'D', 'zh-cn' ) AS 'Chinese (Simplified PRC) Result';  

答案 2 :(得分:0)

试试这个:

<xmlproperty file="pom.xml" prefix="pom" />
<echo>The version is ${pom.project.version}</echo>

答案 3 :(得分:0)

您唯一要做的就是删除字符串日期格式的星期几部分。删除后,该字符串采用SQL Server的标准日期格式。

Declare @yourTable table (
    Id int identity(1,1),
    YourDate  datetime2
)

Insert into @yourTable values 
('2016-09-22'),
('2016-09-16'),
('2016-09-22')

Declare @appDate varchar(100) = 'Thu Sep 22 2016'
Set @appDate = ltrim(substring(@appDate,4,len(@appDate)-3))
select * from @yourTable where cast(YourDate as date) = @appDate

我还将表中的日期时间转换为日期,以避免在查询时使用日期时间的时间组件。