我有一个应用程序以“Thu Sep 22 2016”的格式返回日期,我想查询已存储日期为 的sql服务器数据库,格式为“2016-09- 06" 。 SQL服务器是否提供任何内置的转换功能(特别是3个字母的月份名称到数字)? 请让我知道。SQL服务器在查询前执行日期转换
回答
SQL Server具有有限的日期转换支持。这些在documentation中描述。
我想这你想要做什么:
select convert(date, substring(col, 5, 6) + ',' + right(col, 5), 107)
的想法是你的字符串转换为“2016年9月22日”,然后用这个转换。假设您的国际化格式设置为英文,那么这种方法应该可行。
您可以使用FORMAT
例子:
DECLARE @d DATETIME = '10/01/2011';
SELECT FORMAT (@d, 'd', 'en-US') AS 'US English Result'
,FORMAT (@d, 'd', 'en-gb') AS 'Great Britain English Result'
,FORMAT (@d, 'd', 'de-de') AS 'German Result'
,FORMAT (@d, 'd', 'zh-cn') AS 'Simplified Chinese (PRC) Result';
SELECT FORMAT (@d, 'D', 'en-US') AS 'US English Result'
,FORMAT (@d, 'D', 'en-gb') AS 'Great Britain English Result'
,FORMAT (@d, 'D', 'de-de') AS 'German Result'
,FORMAT (@d, 'D', 'zh-cn') AS 'Chinese (Simplified PRC) Result';
试试这个:
SELECT STR_TO_DATE('Sep 22, 2016','%M %d,%Y');
获取错误“STR_TO_DATE”不是公认的内置函数名称。 “ – user2306856
你正在使用哪个版本的mysql? –
@TK问题说:“* ** SQL服务器**是否提供任何内置函数进行转换*” –
你要做的唯一一件事情就是删除您的字符串的一周部分的一天日期格式。一旦删除了该字符串,它就是SQL Server的标准日期格式。
Declare @yourTable table (
Id int identity(1,1),
YourDate datetime2
)
Insert into @yourTable values
('2016-09-22'),
('2016-09-16'),
('2016-09-22')
Declare @appDate varchar(100) = 'Thu Sep 22 2016'
Set @appDate = ltrim(substring(@appDate,4,len(@appDate)-3))
select * from @yourTable where cast(YourDate as date) = @appDate
我还将表中的日期时间转换为日期以避免在查询时使用日期时间的时间组件。
谢谢..这有帮助! – user2306856
- 1. 转换为varchar日期 - SQL服务器
- 2. SQL服务器 - 日期转换
- 3. 日期转换Oracle到SQL服务器
- 4. SQL(服务器)日期转换
- 5. SQL服务器到Oracle查询转换
- 6. SQL服务器Oracle查询转换
- 7. 将文本日期转换为日期时间SQL服务器
- 8. SQL选择查询日期转换
- 9. SQL执行对特定日期查询
- 10. 数字转换成日期时间日期在SQL Server查询
- 11. 日期转换错误 - MS Access前端查询SQL后端
- 12. 转换多个日期格式迄今在SQL服务器
- 13. 从字符串转换日期类型在SQL服务器
- 14. SQL服务器查询不显示每日日期结果
- 15. 在服务器上执行查询
- 16. 运行sql查询,该查询在日期前删除列
- 17. 转换日期查询
- 18. 日期转换查询
- 19. 查询在Sql服务器
- 20. SQL:执行查询的日期范围,但日期明智
- 21. 在mssql服务器中定期执行特定查询
- 22. SQL服务器多个计数日期的子查询在相同的查询
- 23. 广东话执行SQL查询,与转换(日期,GETDATE()),C#的WinForms
- 24. SQL服务器:按日期
- 25. 转换SQL查询到LINQ得到错误的转换日期
- 26. 无法在远程服务器上执行SQL查询
- 27. 直接从iPhone执行SQL查询到在线服务器
- 28. 在SQL服务器查询中执行循环操作
- 29. SQL Server 2012查询未在测试服务器上执行
- 30. 查找'执行SQL任务'组件执行服务器(SQL Server集成服务)
http://www.w3schools.com/sql/func_convert.asp - 可能有用吗? –
在您的应用程序栈中,调用时总是尽可能早地将字符串表示转换为DateTime实例。调用时总是尽可能晚地转换回字符串。理想情况下,两种转换都发生在表示层中。基于这种最佳做法,日期时间应该作为实际日期时间存储,您的应用程序应该已将您的字符串值转换为日期时间,这使得创建查询变得简单,因为您正在比较类型。 – Igor
感谢您的意见。但不幸的是,我无法控制该应用程序返回日期 - 它基本上是通过执行zfs命令获得的日期输出。它由文件系统返回 – user2306856