{"title":"Database Functions","version":"1.9","locale":"pt-br","docname":"ref/models/database-functions","url":"/pt-br/1.9/ref/models/database-functions/","canonical":"https://djangodocs.dev/pt-br/1.9/ref/models/database-functions/","summary":"The classes documented below provide a way for users to use functions provided by the underlying database as annotations, aggregations, or filters in Django.","html":"<span id=\"database-functions\"></span><h1>Database Functions<a class=\"heading-anchor\" href=\"#module-django.db.models.functions\"><span class=\"visually-hidden\">Link para este cabeçalho</span><span aria-hidden=\"true\">#</span></a></h1>\n<aside class=\"version-note version-added\" data-version=\"1.8\" role=\"note\">\n<p class=\"version-note-title\">New in Django 1.8</p></aside>\n<p>The classes documented below provide a way for users to use functions provided\nby the underlying database as annotations, aggregations, or filters in Django.\nFunctions are also <a class=\"reference internal\" href=\"/pt-br/1.9/ref/models/expressions/\"><span class=\"doc\">expressions</span></a>, so they can be used and\ncombined with other expressions like <a class=\"reference internal\" href=\"/pt-br/1.9/ref/models/querysets/#aggregation-functions\"><span class=\"std std-ref\">aggregate functions</span></a>.</p>\n<p>We’ll be using the following model in examples of each function:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"k\">class</span> <span class=\"nc\">Author</span><span class=\"p\">(</span>models<span class=\"o\">.</span>Model<span class=\"p\">):</span>\n    name <span class=\"o\">=</span> models<span class=\"o\">.</span>CharField<span class=\"p\">(</span>max_length<span class=\"o\">=</span><span class=\"mi\">50</span><span class=\"p\">)</span>\n    age <span class=\"o\">=</span> models<span class=\"o\">.</span>PositiveIntegerField<span class=\"p\">(</span>null<span class=\"o\">=</span><span class=\"kc\">True</span><span class=\"p\">,</span> blank<span class=\"o\">=</span><span class=\"kc\">True</span><span class=\"p\">)</span>\n    alias <span class=\"o\">=</span> models<span class=\"o\">.</span>CharField<span class=\"p\">(</span>max_length<span class=\"o\">=</span><span class=\"mi\">50</span><span class=\"p\">,</span> null<span class=\"o\">=</span><span class=\"kc\">True</span><span class=\"p\">,</span> blank<span class=\"o\">=</span><span class=\"kc\">True</span><span class=\"p\">)</span>\n    goes_by <span class=\"o\">=</span> models<span class=\"o\">.</span>CharField<span class=\"p\">(</span>max_length<span class=\"o\">=</span><span class=\"mi\">50</span><span class=\"p\">,</span> null<span class=\"o\">=</span><span class=\"kc\">True</span><span class=\"p\">,</span> blank<span class=\"o\">=</span><span class=\"kc\">True</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>We don’t usually recommend allowing <code class=\"docutils literal notranslate\">null=True</code> for <code class=\"docutils literal notranslate\">CharField</code> since this\nallows the field to have two “empty values”, but it’s important for the\n<code class=\"docutils literal notranslate\">Coalesce</code> example below.</p>\n<section id=\"coalesce\">\n<h2><code class=\"docutils literal notranslate\">Coalesce</code><a class=\"heading-anchor\" href=\"#coalesce\"><span class=\"visually-hidden\">Link para este cabeçalho</span><span aria-hidden=\"true\">#</span></a></h2>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.functions.Coalesce\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">Coalesce</span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"o\">*</span>expressions</em>, <em class=\"sig-param\"><span class=\"o\">**</span>extra</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.functions.Coalesce\"><span class=\"visually-hidden\">Link para esta definição</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Accepts a list of at least two field names or expressions and returns the\nfirst non-null value (note that an empty string is not considered a null\nvalue). Each argument must be of a similar type, so mixing text and numbers\nwill result in a database error.</p>\n<p>Usage examples:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"c1\"># Get a screen name from least to most public</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span> <span class=\"nn\">django.db.models</span> <span class=\"kn\">import</span> Sum<span class=\"p\">,</span> Value <span class=\"k\">as</span> V\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span> <span class=\"nn\">django.db.models.functions</span> <span class=\"kn\">import</span> Coalesce\n<span class=\"gp\">&gt;&gt;&gt; </span>Author<span class=\"o\">.</span>objects<span class=\"o\">.</span>create<span class=\"p\">(</span>name<span class=\"o\">=</span><span class=\"s1\">&#39;Margaret Smith&#39;</span><span class=\"p\">,</span> goes_by<span class=\"o\">=</span><span class=\"s1\">&#39;Maggie&#39;</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>author <span class=\"o\">=</span> Author<span class=\"o\">.</span>objects<span class=\"o\">.</span>annotate<span class=\"p\">(</span>\n<span class=\"gp\">... </span>   screen_name<span class=\"o\">=</span>Coalesce<span class=\"p\">(</span><span class=\"s1\">&#39;alias&#39;</span><span class=\"p\">,</span> <span class=\"s1\">&#39;goes_by&#39;</span><span class=\"p\">,</span> <span class=\"s1\">&#39;name&#39;</span><span class=\"p\">))</span><span class=\"o\">.</span>get<span class=\"p\">()</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"nb\">print</span><span class=\"p\">(</span>author<span class=\"o\">.</span>screen_name<span class=\"p\">)</span>\n<span class=\"go\">Maggie</span>\n\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"c1\"># Prevent an aggregate Sum() from returning None</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>aggregated <span class=\"o\">=</span> Author<span class=\"o\">.</span>objects<span class=\"o\">.</span>aggregate<span class=\"p\">(</span>\n<span class=\"gp\">... </span>   combined_age<span class=\"o\">=</span>Coalesce<span class=\"p\">(</span>Sum<span class=\"p\">(</span><span class=\"s1\">&#39;age&#39;</span><span class=\"p\">),</span> V<span class=\"p\">(</span><span class=\"mi\">0</span><span class=\"p\">)),</span>\n<span class=\"gp\">... </span>   combined_age_default<span class=\"o\">=</span>Sum<span class=\"p\">(</span><span class=\"s1\">&#39;age&#39;</span><span class=\"p\">))</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"nb\">print</span><span class=\"p\">(</span>aggregated<span class=\"p\">[</span><span class=\"s1\">&#39;combined_age&#39;</span><span class=\"p\">])</span>\n<span class=\"go\">0</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"nb\">print</span><span class=\"p\">(</span>aggregated<span class=\"p\">[</span><span class=\"s1\">&#39;combined_age_default&#39;</span><span class=\"p\">])</span>\n<span class=\"go\">None</span>\n</code></pre></div>\n<aside class=\"admonition admonition-warning\" role=\"note\">\n<p class=\"admonition-title\">Aviso</p>\n<p>A Python value passed to <code class=\"docutils literal notranslate\">Coalesce</code> on MySQL may be converted to an\nincorrect type unless explicitly cast to the correct database type:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span> <span class=\"nn\">django.db.models.expressions</span> <span class=\"kn\">import</span> RawSQL\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span> <span class=\"nn\">django.utils</span> <span class=\"kn\">import</span> timezone\n<span class=\"gp\">&gt;&gt;&gt; </span>now <span class=\"o\">=</span> timezone<span class=\"o\">.</span>now<span class=\"p\">()</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>now_sql <span class=\"o\">=</span> RawSQL<span class=\"p\">(</span><span class=\"s2\">&quot;cast(</span><span class=\"si\">%s</span><span class=\"s2\"> as datetime)&quot;</span><span class=\"p\">,</span> <span class=\"p\">(</span>now<span class=\"p\">,))</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>Coalesce<span class=\"p\">(</span><span class=\"s1\">&#39;updated&#39;</span><span class=\"p\">,</span> now_sql<span class=\"p\">)</span>\n</code></pre></div>\n</aside>\n</section>\n<section id=\"concat\">\n<h2><code class=\"docutils literal notranslate\">Concat</code><a class=\"heading-anchor\" href=\"#concat\"><span class=\"visually-hidden\">Link para este cabeçalho</span><span aria-hidden=\"true\">#</span></a></h2>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.functions.Concat\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">Concat</span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"o\">*</span>expressions</em>, <em class=\"sig-param\"><span class=\"o\">**</span>extra</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.functions.Concat\"><span class=\"visually-hidden\">Link para esta definição</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Accepts a list of at least two text fields or expressions and returns the\nconcatenated text. Each argument must be of a text or char type. If you want\nto concatenate a <code class=\"docutils literal notranslate\">TextField()</code> with a <code class=\"docutils literal notranslate\">CharField()</code>, then be sure to tell\nDjango that the <code class=\"docutils literal notranslate\">output_field</code> should be a <code class=\"docutils literal notranslate\">TextField()</code>. This is also\nrequired when concatenating a <code class=\"docutils literal notranslate\">Value</code> as in the example below.</p>\n<p>This function will never have a null result. On backends where a null argument\nresults in the entire expression being null, Django will ensure that each null\npart is converted to an empty string first.</p>\n<p>Usage example:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"c1\"># Get the display name as &quot;name (goes_by)&quot;</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span> <span class=\"nn\">django.db.models</span> <span class=\"kn\">import</span> CharField<span class=\"p\">,</span> Value <span class=\"k\">as</span> V\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span> <span class=\"nn\">django.db.models.functions</span> <span class=\"kn\">import</span> Concat\n<span class=\"gp\">&gt;&gt;&gt; </span>Author<span class=\"o\">.</span>objects<span class=\"o\">.</span>create<span class=\"p\">(</span>name<span class=\"o\">=</span><span class=\"s1\">&#39;Margaret Smith&#39;</span><span class=\"p\">,</span> goes_by<span class=\"o\">=</span><span class=\"s1\">&#39;Maggie&#39;</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>author <span class=\"o\">=</span> Author<span class=\"o\">.</span>objects<span class=\"o\">.</span>annotate<span class=\"p\">(</span>\n<span class=\"gp\">... </span>   screen_name<span class=\"o\">=</span>Concat<span class=\"p\">(</span><span class=\"s1\">&#39;name&#39;</span><span class=\"p\">,</span> V<span class=\"p\">(</span><span class=\"s1\">&#39; (&#39;</span><span class=\"p\">),</span> <span class=\"s1\">&#39;goes_by&#39;</span><span class=\"p\">,</span> V<span class=\"p\">(</span><span class=\"s1\">&#39;)&#39;</span><span class=\"p\">),</span>\n<span class=\"gp\">... </span>   output_field<span class=\"o\">=</span>CharField<span class=\"p\">()))</span><span class=\"o\">.</span>get<span class=\"p\">()</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"nb\">print</span><span class=\"p\">(</span>author<span class=\"o\">.</span>screen_name<span class=\"p\">)</span>\n<span class=\"go\">Margaret Smith (Maggie)</span>\n</code></pre></div>\n</section>\n<section id=\"greatest\">\n<h2><code class=\"docutils literal notranslate\">Greatest</code><a class=\"heading-anchor\" href=\"#greatest\"><span class=\"visually-hidden\">Link para este cabeçalho</span><span aria-hidden=\"true\">#</span></a></h2>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.functions.Greatest\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">Greatest</span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"o\">*</span>expressions</em>, <em class=\"sig-param\"><span class=\"o\">**</span>extra</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.functions.Greatest\"><span class=\"visually-hidden\">Link para esta definição</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<aside class=\"version-note version-added\" data-version=\"1.9\" role=\"note\">\n<p class=\"version-note-title\">New in Django 1.9</p></aside>\n<p>Accepts a list of at least two field names or expressions and returns the\ngreatest value. Each argument must be of a similar type, so mixing text and\nnumbers will result in a database error.</p>\n<p>Usage example:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"k\">class</span> <span class=\"nc\">Blog</span><span class=\"p\">(</span>models<span class=\"o\">.</span>Model<span class=\"p\">):</span>\n    body <span class=\"o\">=</span> models<span class=\"o\">.</span>TextField<span class=\"p\">()</span>\n    modified <span class=\"o\">=</span> models<span class=\"o\">.</span>DateTimeField<span class=\"p\">(</span>auto_now<span class=\"o\">=</span><span class=\"kc\">True</span><span class=\"p\">)</span>\n\n<span class=\"k\">class</span> <span class=\"nc\">Comment</span><span class=\"p\">(</span>models<span class=\"o\">.</span>Model<span class=\"p\">):</span>\n    body <span class=\"o\">=</span> models<span class=\"o\">.</span>TextField<span class=\"p\">()</span>\n    modified <span class=\"o\">=</span> models<span class=\"o\">.</span>DateTimeField<span class=\"p\">(</span>auto_now<span class=\"o\">=</span><span class=\"kc\">True</span><span class=\"p\">)</span>\n    blog <span class=\"o\">=</span> models<span class=\"o\">.</span>ForeignKey<span class=\"p\">(</span>Blog<span class=\"p\">,</span> on_delete<span class=\"o\">=</span>models<span class=\"o\">.</span>CASCADE<span class=\"p\">)</span>\n\n<span class=\"o\">&gt;&gt;&gt;</span> <span class=\"kn\">from</span> <span class=\"nn\">django.db.models.functions</span> <span class=\"kn\">import</span> Greatest\n<span class=\"o\">&gt;&gt;&gt;</span> blog <span class=\"o\">=</span> Blog<span class=\"o\">.</span>objects<span class=\"o\">.</span>create<span class=\"p\">(</span>body<span class=\"o\">=</span><span class=\"s1\">&#39;Greatest is the best.&#39;</span><span class=\"p\">)</span>\n<span class=\"o\">&gt;&gt;&gt;</span> comment <span class=\"o\">=</span> Comment<span class=\"o\">.</span>objects<span class=\"o\">.</span>create<span class=\"p\">(</span>body<span class=\"o\">=</span><span class=\"s1\">&#39;No, Least is better.&#39;</span><span class=\"p\">,</span> blog<span class=\"o\">=</span>blog<span class=\"p\">)</span>\n<span class=\"o\">&gt;&gt;&gt;</span> comments <span class=\"o\">=</span> Comment<span class=\"o\">.</span>objects<span class=\"o\">.</span>annotate<span class=\"p\">(</span>last_updated<span class=\"o\">=</span>Greatest<span class=\"p\">(</span><span class=\"s1\">&#39;modified&#39;</span><span class=\"p\">,</span> <span class=\"s1\">&#39;blog__modified&#39;</span><span class=\"p\">))</span>\n<span class=\"o\">&gt;&gt;&gt;</span> annotated_comment <span class=\"o\">=</span> comments<span class=\"o\">.</span>get<span class=\"p\">()</span>\n</code></pre></div>\n<p><code class=\"docutils literal notranslate\">annotated_comment.last_updated</code> will be the most recent of <code class=\"docutils literal notranslate\">blog.modified</code>\nand <code class=\"docutils literal notranslate\">comment.modified</code>.</p>\n<aside class=\"admonition admonition-warning\" role=\"note\">\n<p class=\"admonition-title\">Aviso</p>\n<p>The behavior of <code class=\"docutils literal notranslate\">Greatest</code> when one or more expression may be <code class=\"docutils literal notranslate\">null</code>\nvaries between databases:</p>\n<ul class=\"simple\">\n<li><p>PostgreSQL: <code class=\"docutils literal notranslate\">Greatest</code> will return the largest non-null expression,\nor <code class=\"docutils literal notranslate\">null</code> if all expressions are <code class=\"docutils literal notranslate\">null</code>.</p></li>\n<li><p>SQLite, Oracle, and MySQL: If any expression is <code class=\"docutils literal notranslate\">null</code>, <code class=\"docutils literal notranslate\">Greatest</code>\nwill return <code class=\"docutils literal notranslate\">null</code>.</p></li>\n</ul>\n<p>The PostgreSQL behavior can be emulated using <code class=\"docutils literal notranslate\">Coalesce</code> if you know\na sensible minimum value to provide as a default.</p>\n</aside>\n</section>\n<section id=\"least\">\n<h2><code class=\"docutils literal notranslate\">Least</code><a class=\"heading-anchor\" href=\"#least\"><span class=\"visually-hidden\">Link para este cabeçalho</span><span aria-hidden=\"true\">#</span></a></h2>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.functions.Least\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">Least</span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"o\">*</span>expressions</em>, <em class=\"sig-param\"><span class=\"o\">**</span>extra</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.functions.Least\"><span class=\"visually-hidden\">Link para esta definição</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<aside class=\"version-note version-added\" data-version=\"1.9\" role=\"note\">\n<p class=\"version-note-title\">New in Django 1.9</p></aside>\n<p>Accepts a list of at least two field names or expressions and returns the\nleast value. Each argument must be of a similar type, so mixing text and numbers\nwill result in a database error.</p>\n<aside class=\"admonition admonition-warning\" role=\"note\">\n<p class=\"admonition-title\">Aviso</p>\n<p>The behavior of <code class=\"docutils literal notranslate\">Least</code> when one or more expression may be <code class=\"docutils literal notranslate\">null</code>\nvaries between databases:</p>\n<ul class=\"simple\">\n<li><p>PostgreSQL: <code class=\"docutils literal notranslate\">Least</code> will return the smallest non-null expression,\nor <code class=\"docutils literal notranslate\">null</code> if all expressions are <code class=\"docutils literal notranslate\">null</code>.</p></li>\n<li><p>SQLite, Oracle, and MySQL: If any expression is <code class=\"docutils literal notranslate\">null</code>, <code class=\"docutils literal notranslate\">Least</code>\nwill return <code class=\"docutils literal notranslate\">null</code>.</p></li>\n</ul>\n<p>The PostgreSQL behavior can be emulated using <code class=\"docutils literal notranslate\">Coalesce</code> if you know\na sensible maximum value to provide as a default.</p>\n</aside>\n</section>\n<section id=\"length\">\n<h2><code class=\"docutils literal notranslate\">Length</code><a class=\"heading-anchor\" href=\"#length\"><span class=\"visually-hidden\">Link para este cabeçalho</span><span aria-hidden=\"true\">#</span></a></h2>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.functions.Length\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">Length</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">expression</em>, <em class=\"sig-param\"><span class=\"o\">**</span>extra</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.functions.Length\"><span class=\"visually-hidden\">Link para esta definição</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Accepts a single text field or expression and returns the number of characters\nthe value has. If the expression is null, then the length will also be null.</p>\n<p>Usage example:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"c1\"># Get the length of the name and goes_by fields</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span> <span class=\"nn\">django.db.models.functions</span> <span class=\"kn\">import</span> Length\n<span class=\"gp\">&gt;&gt;&gt; </span>Author<span class=\"o\">.</span>objects<span class=\"o\">.</span>create<span class=\"p\">(</span>name<span class=\"o\">=</span><span class=\"s1\">&#39;Margaret Smith&#39;</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>author <span class=\"o\">=</span> Author<span class=\"o\">.</span>objects<span class=\"o\">.</span>annotate<span class=\"p\">(</span>\n<span class=\"gp\">... </span>   name_length<span class=\"o\">=</span>Length<span class=\"p\">(</span><span class=\"s1\">&#39;name&#39;</span><span class=\"p\">),</span>\n<span class=\"gp\">... </span>   goes_by_length<span class=\"o\">=</span>Length<span class=\"p\">(</span><span class=\"s1\">&#39;goes_by&#39;</span><span class=\"p\">))</span><span class=\"o\">.</span>get<span class=\"p\">()</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"nb\">print</span><span class=\"p\">(</span>author<span class=\"o\">.</span>name_length<span class=\"p\">,</span> author<span class=\"o\">.</span>goes_by_length<span class=\"p\">)</span>\n<span class=\"go\">(14, None)</span>\n</code></pre></div>\n<p>It can also be registered as a transform. For example:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span> <span class=\"nn\">django.db.models</span> <span class=\"kn\">import</span> CharField\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span> <span class=\"nn\">django.db.models.functions</span> <span class=\"kn\">import</span> Length\n<span class=\"gp\">&gt;&gt;&gt; </span>CharField<span class=\"o\">.</span>register_lookup<span class=\"p\">(</span>Length<span class=\"p\">,</span> <span class=\"s1\">&#39;length&#39;</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"c1\"># Get authors whose name is longer than 7 characters</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>authors <span class=\"o\">=</span> Author<span class=\"o\">.</span>objects<span class=\"o\">.</span>filter<span class=\"p\">(</span>name__length__gt<span class=\"o\">=</span><span class=\"mi\">7</span><span class=\"p\">)</span>\n</code></pre></div>\n<aside class=\"version-note version-changed\" data-version=\"1.9\" role=\"note\">\n<p class=\"version-note-title\">Changed in Django 1.9</p><p>The ability to register the function as a transform was added.</p>\n</aside>\n</section>\n<section id=\"lower\">\n<h2><code class=\"docutils literal notranslate\">Lower</code><a class=\"heading-anchor\" href=\"#lower\"><span class=\"visually-hidden\">Link para este cabeçalho</span><span aria-hidden=\"true\">#</span></a></h2>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.functions.Lower\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">Lower</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">expression</em>, <em class=\"sig-param\"><span class=\"o\">**</span>extra</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.functions.Lower\"><span class=\"visually-hidden\">Link para esta definição</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Accepts a single text field or expression and returns the lowercase\nrepresentation.</p>\n<p>It can also be registered as a transform as described in <a class=\"reference internal\" href=\"#django.db.models.functions.Length\" title=\"django.db.models.functions.Length\"><code class=\"xref py py-class docutils literal notranslate\">Length</code></a>.</p>\n<p>Usage example:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span> <span class=\"nn\">django.db.models.functions</span> <span class=\"kn\">import</span> Lower\n<span class=\"gp\">&gt;&gt;&gt; </span>Author<span class=\"o\">.</span>objects<span class=\"o\">.</span>create<span class=\"p\">(</span>name<span class=\"o\">=</span><span class=\"s1\">&#39;Margaret Smith&#39;</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>author <span class=\"o\">=</span> Author<span class=\"o\">.</span>objects<span class=\"o\">.</span>annotate<span class=\"p\">(</span>name_lower<span class=\"o\">=</span>Lower<span class=\"p\">(</span><span class=\"s1\">&#39;name&#39;</span><span class=\"p\">))</span><span class=\"o\">.</span>get<span class=\"p\">()</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"nb\">print</span><span class=\"p\">(</span>author<span class=\"o\">.</span>name_lower<span class=\"p\">)</span>\n<span class=\"go\">margaret smith</span>\n</code></pre></div>\n<aside class=\"version-note version-changed\" data-version=\"1.9\" role=\"note\">\n<p class=\"version-note-title\">Changed in Django 1.9</p><p>The ability to register the function as a transform was added.</p>\n</aside>\n</section>\n<section id=\"now\">\n<h2><code class=\"docutils literal notranslate\">Now</code><a class=\"heading-anchor\" href=\"#now\"><span class=\"visually-hidden\">Link para este cabeçalho</span><span aria-hidden=\"true\">#</span></a></h2>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.functions.Now\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">Now</span><a class=\"heading-anchor\" href=\"#django.db.models.functions.Now\"><span class=\"visually-hidden\">Link para esta definição</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<aside class=\"version-note version-added\" data-version=\"1.9\" role=\"note\">\n<p class=\"version-note-title\">New in Django 1.9</p></aside>\n<p>Returns the database server’s current date and time when the query is executed,\ntypically using the SQL <code class=\"docutils literal notranslate\">CURRENT_TIMESTAMP</code>.</p>\n<p>Usage example:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span> <span class=\"nn\">django.db.models.functions</span> <span class=\"kn\">import</span> Now\n<span class=\"gp\">&gt;&gt;&gt; </span>Article<span class=\"o\">.</span>objects<span class=\"o\">.</span>filter<span class=\"p\">(</span>published__lte<span class=\"o\">=</span>Now<span class=\"p\">())</span>\n<span class=\"go\">[&lt;Article: How to Django&gt;]</span>\n</code></pre></div>\n<aside class=\"admonition-postgresql-considerations admonition\" role=\"note\">\n<p class=\"admonition-title\">PostgreSQL considerations</p>\n<p>On PostgreSQL, the SQL <code class=\"docutils literal notranslate\">CURRENT_TIMESTAMP</code> returns the time that the\ncurrent transaction started. Therefore for cross-database compatibility,\n<code class=\"docutils literal notranslate\">Now()</code> uses <code class=\"docutils literal notranslate\">STATEMENT_TIMESTAMP</code> instead. If you need the transaction\ntimestamp, use <a class=\"reference internal\" href=\"/pt-br/1.9/ref/contrib/postgres/functions/#django.contrib.postgres.functions.TransactionNow\" title=\"django.contrib.postgres.functions.TransactionNow\"><code class=\"xref py py-class docutils literal notranslate\">django.contrib.postgres.functions.TransactionNow</code></a>.</p>\n</aside>\n</section>\n<section id=\"substr\">\n<h2><code class=\"docutils literal notranslate\">Substr</code><a class=\"heading-anchor\" href=\"#substr\"><span class=\"visually-hidden\">Link para este cabeçalho</span><span aria-hidden=\"true\">#</span></a></h2>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.functions.Substr\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">Substr</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">expression</em>, <em class=\"sig-param\">pos</em>, <em class=\"sig-param\">length<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\"><span class=\"o\">**</span>extra</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.functions.Substr\"><span class=\"visually-hidden\">Link para esta definição</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Returns a substring of length <code class=\"docutils literal notranslate\">length</code> from the field or expression starting\nat position <code class=\"docutils literal notranslate\">pos</code>. The position is 1-indexed, so the position must be greater\nthan 0. If <code class=\"docutils literal notranslate\">length</code> is <code class=\"docutils literal notranslate\">None</code>, then the rest of the string will be returned.</p>\n<p>Usage example:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"c1\"># Set the alias to the first 5 characters of the name as lowercase</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span> <span class=\"nn\">django.db.models.functions</span> <span class=\"kn\">import</span> Substr<span class=\"p\">,</span> Lower\n<span class=\"gp\">&gt;&gt;&gt; </span>Author<span class=\"o\">.</span>objects<span class=\"o\">.</span>create<span class=\"p\">(</span>name<span class=\"o\">=</span><span class=\"s1\">&#39;Margaret Smith&#39;</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>Author<span class=\"o\">.</span>objects<span class=\"o\">.</span>update<span class=\"p\">(</span>alias<span class=\"o\">=</span>Lower<span class=\"p\">(</span>Substr<span class=\"p\">(</span><span class=\"s1\">&#39;name&#39;</span><span class=\"p\">,</span> <span class=\"mi\">1</span><span class=\"p\">,</span> <span class=\"mi\">5</span><span class=\"p\">)))</span>\n<span class=\"go\">1</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"nb\">print</span><span class=\"p\">(</span>Author<span class=\"o\">.</span>objects<span class=\"o\">.</span>get<span class=\"p\">(</span>name<span class=\"o\">=</span><span class=\"s1\">&#39;Margaret Smith&#39;</span><span class=\"p\">)</span><span class=\"o\">.</span>alias<span class=\"p\">)</span>\n<span class=\"go\">marga</span>\n</code></pre></div>\n</section>\n<section id=\"upper\">\n<h2><code class=\"docutils literal notranslate\">Upper</code><a class=\"heading-anchor\" href=\"#upper\"><span class=\"visually-hidden\">Link para este cabeçalho</span><span aria-hidden=\"true\">#</span></a></h2>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.functions.Upper\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">Upper</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">expression</em>, <em class=\"sig-param\"><span class=\"o\">**</span>extra</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.functions.Upper\"><span class=\"visually-hidden\">Link para esta definição</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Accepts a single text field or expression and returns the uppercase\nrepresentation.</p>\n<p>It can also be registered as a transform as described in <a class=\"reference internal\" href=\"#django.db.models.functions.Length\" title=\"django.db.models.functions.Length\"><code class=\"xref py py-class docutils literal notranslate\">Length</code></a>.</p>\n<p>Usage example:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span> <span class=\"nn\">django.db.models.functions</span> <span class=\"kn\">import</span> Upper\n<span class=\"gp\">&gt;&gt;&gt; </span>Author<span class=\"o\">.</span>objects<span class=\"o\">.</span>create<span class=\"p\">(</span>name<span class=\"o\">=</span><span class=\"s1\">&#39;Margaret Smith&#39;</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>author <span class=\"o\">=</span> Author<span class=\"o\">.</span>objects<span class=\"o\">.</span>annotate<span class=\"p\">(</span>name_upper<span class=\"o\">=</span>Upper<span class=\"p\">(</span><span class=\"s1\">&#39;name&#39;</span><span class=\"p\">))</span><span class=\"o\">.</span>get<span class=\"p\">()</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"nb\">print</span><span class=\"p\">(</span>author<span class=\"o\">.</span>name_upper<span class=\"p\">)</span>\n<span class=\"go\">MARGARET SMITH</span>\n</code></pre></div>\n<aside class=\"version-note version-changed\" data-version=\"1.9\" role=\"note\">\n<p class=\"version-note-title\">Changed in Django 1.9</p><p>The ability to register the function as a transform was added.</p>\n</aside>\n</section>","rootId":"module-django.db.models.functions","toc":[{"title":"Coalesce","anchor":"coalesce","children":[]},{"title":"Concat","anchor":"concat","children":[]},{"title":"Greatest","anchor":"greatest","children":[]},{"title":"Least","anchor":"least","children":[]},{"title":"Length","anchor":"length","children":[]},{"title":"Lower","anchor":"lower","children":[]},{"title":"Now","anchor":"now","children":[]},{"title":"Substr","anchor":"substr","children":[]},{"title":"Upper","anchor":"upper","children":[]}],"breadcrumbs":[{"docname":"ref/index","title":"Referência da API","url":"/pt-br/1.9/ref/"},{"docname":"ref/models/index","title":"Models","url":"/pt-br/1.9/ref/models/"}],"prev":{"docname":"ref/models/conditional-expressions","title":"Conditional Expressions","url":"/pt-br/1.9/ref/models/conditional-expressions/"},"next":{"docname":"ref/request-response","title":"Request and response objects","url":"/pt-br/1.9/ref/request-response/"},"formats":{"html":"/pt-br/1.9/ref/models/database-functions/","markdown":"/pt-br/1.9/ref/models/database-functions.md","json":"/pt-br/1.9/ref/models/database-functions.json"},"source":"https://github.com/django/django/blob/stable/1.9.x/docs/ref/models/database-functions.txt","official":"https://docs.djangoproject.com/pt-br/1.9/ref/models/database-functions/","inVersions":["6.1","6.0","5.2","5.1","5.0","4.2","4.1","4.0","3.2","3.1","3.0","2.2","2.1","2.0","1.11","1.10","1.9"],"inLocales":["en","fr","ja","id","pt-br","es"]}