【问题标题】:SQL, How do I trim date to exclude the time?SQL,如何修剪日期以排除时间?
【发布时间】:2013-12-06 17:06:07
【问题描述】:

对于我的查询,我必须从表中提取日期,但它们也包括时间。如何修剪以不包括时间?

CAST(m.START_DATE AS varchar(12)) AS StartDate

但发生的情况是,我的结果显示为“2013 年 6 月 12 日”。如何将其更改为 2013 年 6 月 12 日?

【问题讨论】:

  • 什么数据库?您的问题一部分是关于类型转换或日期时间截断,另一部分是关于格式。
  • sqlserver 但我使用了 convert(varchar(10), m.start_date, 101)

标签: sql-server date casting


【解决方案1】:

您可以使用 cast-to-date 功能去除时间部分:

SELECT CAST(m.START_DATE AS DATE)

阅读 CONVERT 函数可能对您很有帮助:

MSDN Link

例如:

SELECT CONVERT(varchar(10),m.START_DATE,102)

这将帮助您以自己喜欢的样式格式化日期。

【讨论】:

  • 我刚刚使用 cast(m.start_date as date) 并且它有效。谢谢你! (我在 sql server 上,所以内置的 date() 函数不起作用。)
  • 所有数据库程序员都应该为这个 MSDN 链接添加书签! imo :)
  • 那不是英文,试试这个:msdn.microsoft.com/en-us/library/ms187928.aspx
  • 我使用了 convert(varchar(10), m.start_date, 101),效果更好!
  • 嗯?哪个版本的 SQL Server 有 DATE() 作为内置函数?
【解决方案2】:

你可以试试DATE()函数 所以会是

SELECT DATE(m.START_DATE)

这适用于 MySQL

对于 SQL Server 尝试:

SELECT CONVERT(date, m.START_DATE)

【讨论】:

  • 并不是所有的 rdbms 都有这个功能。到目前为止,我们还不知道那是什么。
  • true 这适用于 MySQL。谢谢@DanBracuk 我更新了答案。
  • LittleSweetSeas 的回答中提到的转换功能将使 Bob 成为你的叔叔。
  • 我用了convert(varchar(10), m.start_date, 101),比我的方法好多了哈哈
【解决方案3】:

您可以使用 SQL Server 中的 DATE 数据类型从 DATETIME 字段中提取时间:

SELECT CAST(m.START_DATE AS DATE) AS StartDate

对于格式化,您可以使用 CONVERT() 并找到适合您所追求的格式类型的代码,但如果您使用的是 SQL Server 2012,则可以使用方便的 FORMAT() 函数:

SELECT FORMAT(m.START_DATE,'MM/dd/yyyy')

值得注意的是,FORMAT() 很慢,除了格式化输出之外,我不会将它用于其他任何事情,这在大多数情况下最好在 SQL(表示层)之外完成。

【解决方案4】:

试试下面的方法..它会帮助你...

在 SQL 服务器中 -> SELECT CONVERT(varchar(10),datestring,101)

在 MYSQL -> SELECT STR_TO_DATE(datestring, '%M/%d/%Y')

在甲骨文中 -> SELECT to_char(datestring,'MM/DD/YYYY')

【讨论】:

  • 我刚刚使用 cast(m.start_date as date) 并且它有效。谢谢!
  • 我用了 convert(varchar(10), m.start_date, 101),好多了,谢谢!
猜你喜欢
  • 2018-12-11
  • 2010-10-07
  • 2023-03-30
  • 1970-01-01
  • 2016-01-18
  • 2013-06-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多