子串的T-SQL日期格式

时间:2011-12-21 14:40:26

标签: sql-server tsql substring

我们有一个名称为target_date的字段。这是一个字符串。我们需要从该字段中提取月份和年份。

实施例: 1/10/2011(日/月/年) 我们正在尝试

 substring(target date,findstring(targetdate,"/",1)+1,(findstring(targetdate,"/",2)-findstring(targetdate,"/",1)+1)).

请帮帮我。

感谢。

4 个答案:

答案 0 :(得分:5)

嗯,这里的第一个问题是你将datetime存储为字符串。我会假设无论出于什么原因你无法解决这个问题......

在这种情况下,我要做的是使用convert()功能

convert(datetime, target_date, 103)

然后使用month()year()

提取所需的值

答案 1 :(得分:4)

描述

  1. 使用CAST and CONVERT (Transact-SQL)将字符串转换为日期时间。
  2. 使用DATEPART (Transact-SQL)提取月份和年份。
  3. 示例

        -- this will give you the month of your target_date
        datePart(mm, convert(datetime, target_date, 103)) 
    
        -- this will give you the year of your target_date
        datePart(yyyy, convert(datetime, target_date, 103)) -- 2011
        -- or
        datePart(yy, convert(datetime, target_date, 103)) -- 11
    

答案 2 :(得分:2)

declare @date varchar(10)

set @date = '1/10/2011'

select DATEPART(yyyy, CONVERT(datetime, @date, 103)), DATEPART(mm, CONVERT(datetime, @date, 103))

答案 3 :(得分:0)

试试这个:

Month : left(right(target_date , 7),2)
Year: right(target_date , 4)

这是因为target_date的格式总是相同的(即.dd / mm / yyyy)