|
|
1
164
试试这个:
它也很好用,还有不做任何字符串转换的好处,所以它是纯算术处理(非常快),不依赖于任何日期格式 这利用了这样一个事实,即SQL Server对日期时间和smalldatetime值的内部表示是一个由两部分组成的值,其中第一部分是一个整数,表示自1900年1月1日以来的天数,第二部分是十进制小数,表示一天(时间)的小数部分——因此整数值0(零)总是直接转换为1900年1日午夜的早晨。。。 或者,感谢@brinary的建议,
2014年10月编辑。正如@cade Roux所指出的,SQL 2012现在有一个内置函数:
2016年10月3日编辑,(感谢@bambams注意到这一点,@brinary修复了它),最后一个解决方案,由@brinari提出。除非先进行年份加法,否则在闰年似乎不起作用
|
|
|
2
327
SQL Server 2012有一个很棒的、期待已久的新DATEFROMPARTS函数(如果日期无效,它将引发错误——我主要反对基于DATEADD的解决方案来解决这个问题): http://msdn.microsoft.com/en-us/library/hh213228.aspx
或
|
|
|
3
224
假设
请看 my other answer 适用于SQL Server 2012及更高版本 |
|
|
4
116
或者只使用一个dateadd函数:
|
|
|
5
16
Sql Server 2012有一个函数,可以根据零件创建日期( DATEFROMPARTS ).对于我们其他人来说,这是我创建的一个db函数,它将根据零件确定日期(谢谢@Charles)。..
你可以这样称呼它。..
返回。..
|
|
|
6
12
尝试CONVERT而不是CAST。 CONVERT允许第三个参数指示日期格式。 格式列表如下: http://msdn.microsoft.com/en-us/library/ms187928.aspx 在选择另一个答案作为“正确”答案后进行更新: 我真的不明白为什么选择的答案明显取决于您服务器上的NLS设置,而没有指明此限制。 |
|
|
7
8
您还可以使用
自2012版和AzureSQL以来一直在SQL中工作 |
|
|
8
6
使用明确的起点“19000101”更安全、更整洁
|
|
|
9
4
如果你不想让字符串远离它,这也可以(把它放进一个函数中):
|
|
|
10
4
如果你需要日期时间,我会添加一行解决方案 从日期和时间部分 :
|
|
|
11
3
尝试
|
|
|
12
2
对于低于12的SQL Server版本,我建议使用
如何创建这些字符串取决于你 |
|
|
13
1
我知道OP要求SQL 2005的答案,但这个问题很老了,所以如果你运行的是SQL 2012或更高版本,你可以使用以下命令:
|
|
|
14
0
尝试此查询:
结果:
|
|
|
Johnny T · 基于当前值的SQL合并表[重复] 1 年前 |
|
John D · 需要为NULL或NOT NULL的WHERE子句 1 年前 |
|
ojek · 如何对SQL结果进行分组和编号? 1 年前 |
|
|
senek · 如何在PL/SQL中将选择结果(列)放入数组中 1 年前 |
|
|
Sax · 规范化Google表格(第一步) 1 年前 |
|
|
Jatin · 检索卷计数的动态sql抛出错误语法错误[关闭] 1 年前 |
|
|
Andrus · 如何在sql中查找第二个匹配项 1 年前 |