将日期转换为 SQL 日期时间
Posted
技术标签:
【中文标题】将日期转换为 SQL 日期时间【英文标题】:Convert date to SQL datetime 【发布时间】:2014-08-26 17:42:07 【问题描述】:我对 T-SQL 有点陌生,尽管阅读了许多表明这应该可以工作的文章,但我在将当年 10 月 1 日转换为日期时间时遇到了麻烦。
我试过了:
SELECT CAST(DATEPART(year, GETDATE()) + '1015' AS DATETIME)
SELECT CONVERT(datetime, 'Oct 15 ' + DATEPART(YEAR,GETDATE()),100)
还有各种变化。
有什么想法吗?我需要将日期时间变量设置为当年的 10 月 1 日。
【问题讨论】:
您提到 10 月 1 日,但参考 10 月 15 日。是哪个? 这个由MSDN documentation直接回答。 抱歉,现在是 10 月 15 日。今年 12 月 7 日我还需要一个。但我认为这两个例子都差不多。 Best way to parse DateTime to SQL server的可能重复 Pheonixblade,我理解你的评论,但我的意思是我试图遵循它无济于事。感谢您的帮助。 【参考方案1】:你想要的很接近,但 DATEPART 返回一个数字,所以“+”是做加法,而不是连接。
试试这样:
SELECT CAST(CAST(DATEPART(year, GETDATE()) AS VARCHAR(4)) + '1015' AS DATETIME)
edit -- Ed 打败了我,Concat 功能也更好。
但如果你真的想把它赶出公园,试试这个......
SELECT DATEADD(month, 9, DATEADD(year, DATEDIFF(year, 0, getdate()), 0)) As October1CurrentYear
无需投射!
【讨论】:
+1 你的回答也是正确的,因为CONCAT
函数只能从SQL Server 2012
开始使用【参考方案2】:
您的第一个查询非常接近。问题是用于连接的加号 (+) 实际上是给您一个数值,您不能将其转换为日期。
要连接年份和“1015”并以字符串结尾,请改用CONCAT
函数:
SELECT CAST(CONCAT(DATEPART(YEAR, GETDATE()), '1015') AS DATE)
【讨论】:
非常感谢,埃德。其他建议似乎相反(日期到字符串),SQL 中的连接内容有点学习曲线,与 VB 非常不同。以上是关于将日期转换为 SQL 日期时间的主要内容,如果未能解决你的问题,请参考以下文章