我将一些字符串值转换datetime
为如下:
'20131018'
'20130917'
通过使用
CONVERT(DATETIME, @date, 101)
我得到了以下
'2013-10-18 00:00:00.000'
'2013-09-17 00:00:00.000'
我将如何删除值的时间部分?
我将一些字符串值转换datetime
为如下:
'20131018'
'20130917'
通过使用
CONVERT(DATETIME, @date, 101)
我得到了以下
'2013-10-18 00:00:00.000'
'2013-09-17 00:00:00.000'
我将如何删除值的时间部分?
SUBSTRING(表达式,开始,长度),其中表达式将是您的时间戳字符串,开始将是 1,长度将是“yyyy-mm-dd”的长度,即 10。有关更多参考,请查看http://technet.microsoft.com /en-us/library/ms187748.aspx
检查“marc_s”所说的内容。只需使用 DATE 而不是 DATETIME。这将是更好的选择。
有一些我制作的代码。如果您能弄清楚如何使这更快或更好,请告诉我!;)
case --Format date into YYYYMMDD with placeholder 0's
when (CAST(DATEPART(DD,DATEADD(day, 7, <DATE>)) as int ) < 10) AND (CAST(DATEPART(MM,DATEADD(day, 7, <DATE>)) as int) < 10)
then CAST(DATEPART(YYYY,DATEADD(day, 7, <DATE>)) as CHAR(4))
+'0'+ LTRIM(RTRIM(CAST(DATEPART(MM,DATEADD(day, 7, <DATE>)) as CHAR(2))))
+'0'+LTRIM(RTRIM(CAST(DATEPART(DD,DATEADD(day, 7, <DATE>)) as CHAR(2))))
when (CAST(DATEPART(MM,DATEADD(day, 7, <DATE>)) as int) < 10)
then CAST(DATEPART(YYYY,DATEADD(day, 7, <DATE>)) as CHAR(4))
+'0'+LTRIM(RTRIM(CAST(DATEPART(MM,DATEADD(day, 7, <DATE>)) as CHAR(2))))
+CAST(DATEPART(DD,DATEADD(day, 7, <DATE>)) as CHAR(2))
when (CAST(DATEPART(DD, DATEADD(day, 7, <DATE>)) as int ) < 10)
then CAST(DATEPART(YYYY,DATEADD(day, 7, <DATE>)) as CHAR(4))
+ CAST(DATEPART(MM,DATEADD(day, 7, <DATE>)) as CHAR(2))
+'0'+LTRIM(RTRIM(CAST(DATEPART(DD,DATEADD(day, 7, <DATE>)) as CHAR(2))))
else CAST(DATEPART(YYYY,DATEADD(day, 7, <DATE>)) as CHAR(4))
+CAST(DATEPART(MM,DATEADD(day, 7, <DATE>)) as CHAR(2))
+CAST(DATEPART(DD,DATEADD(day, 7, <DATE>)) as CHAR(2))
end
这是它的工作原理。把它放在 SELECT 之后。进行查找和替换并将您的日期放在那里。它检查月份和日期的位数,然后在适当的时候将 0 或 2 插入到字符串中。我保存了这段代码,以便在遇到此问题时易于使用。希望能帮助到你!
--EDIT-- 在我看来,这可能与您想要做的相反...