我转换一些字符串值datetime
如下:日期时间转换在SQL Server 2005中
'20131018'
'20130917'
使用
CONVERT(DATETIME, @date, 101)
我得到了以下
'2013-10-18 00:00:00.000'
'2013-09-17 00:00:00.000'
我怎么删除值的时间部分?
我转换一些字符串值datetime
如下:日期时间转换在SQL Server 2005中
'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.This将是更好的选择。
真的,'DATE'在这里是更好的选择 - 但是这个数据类型是** NOT YET **在SQL Server * * 2005 **,即OP正在使用.... –
@ marc_s - 然后我们可以使用子串,我认为我建议。 – virus
有我做的一些代码。如果你能弄清楚如何让这个更快或更好,让我知道! ;)
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。我保存了这段代码,以便在遇到此问题时很容易使用。希望能帮助到你!
- 编辑 - 它发生在我,这可能是你想要做什么反...
在SQL Server 2008 ** **,你会得到'DATE'数据类型只是那 - 仅限日期。 2005年只有'DATETIME',这些值总是包含时间部分。 –
时间组件是否会破坏任何东西,或只是在视觉上烦人? – StingyJack
CONVERT(日期,@date,101)会做你想做的事 –