Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何按日期、日期和x27进行分组;s格式为nvarchar_Sql - Fatal编程技术网

Sql 如何按日期、日期和x27进行分组;s格式为nvarchar

Sql 如何按日期、日期和x27进行分组;s格式为nvarchar,sql,Sql,例如: 我的日期是nvarchar(20) 如何按日期分组 例如: mydate ------------ 2011/08/04 2011/07/20 与往常完全相同的方法应该做到这一点。如果我没有弄错的话,varchar将按字母顺序排序,在本例中是相同的。我还建议将数据库结构更改为日期而不是字符。如果您使用的是SQL Server,请尝试以下操作: SELECT LEFT(date_col,10) AS mydate, COUNT(*) FROM your_table GROUP BY L

例如:
我的日期是nvarchar(20)

如何按日期分组

例如:

mydate
------------
2011/08/04
2011/07/20

与往常完全相同的方法应该做到这一点。如果我没有弄错的话,varchar将按字母顺序排序,在本例中是相同的。我还建议将数据库结构更改为日期而不是字符。

如果您使用的是SQL Server,请尝试以下操作:

SELECT LEFT(date_col,10) AS mydate, COUNT(*) 
FROM your_table
GROUP BY LEFT(date_col,10);

在Oracle中,您可以使用以下示例:

select substr(mydate, 1, 10), count(*)
  from mytable
 group by substr(mydate, 1, 10)
SQL Server-试试这个

SELECT convert(varchar, getdate(), 111) AS mydate
FROM yourtable
GROUP BY convert(varchar, getdate(), 111)

您使用哪种数据库系统?日期不应存储为字符串,如果您必须将其存储为字符串,请至少使用明确且可排序的日期格式,最后,为什么
nvarchar(20)
?它们永远不会包含任何非ASCII字符。@Martin-你确定吗?似乎有可能存在阿拉伯语或希伯来语的日期…@Hugh-如果OP计划也将日期存储为希伯来语和问题中的格式混合的字符串,那么这只会增加他们在进行
分组时的问题列表!我同意你的观点,但这张桌子已经摆好了,不能改变。这就是为什么我试图在它的基础上找到解决方案。谢谢你的建议!谢谢你!我正在使用SQL SERVER~
SELECT convert(varchar, getdate(), 111) AS mydate
FROM yourtable
GROUP BY convert(varchar, getdate(), 111)